페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
1000
ms
메모리 제한
2048
MB
샐마는 벽에 점토 모자이크를 색칠할 계획이다. 모자이크는 초기에 개의 색칠되지 않은 정사각형 타일들로 이루어진 격자이다. 모자이크의 행들은 위에서 아래 방향으로 부터 까지 번호가 붙어있고, 열들은 왼쪽에서 오른쪽으로 부터 까지 번호가 붙어있다. 행과 열 (, ) 의 타일은 로 나타낸다. 각 타일은 흰색 (으로 나타냄) 또는 검은색 (로 나타냄)으로 색칠 해야만 한다.
모자이크를 색칠하기 위해 샐마는 우선 길이 의 두 배열 와 를 선택하는데, 배열의 각 원소는 또는 의 값을 가지고 을 만족한다. 그녀는 먼저 배열 에 따라서 가장 위쪽 행( 행)의 타일들을 색칠하는데, 타일 의 색은 ()와 같다. 그녀는 그 다음 배열 에 따라서 가장 왼쪽 열( 열)의 타일들을 색칠하는데, 타일 의 색은 ()와 같다.
그 후 그녀는 모든 타일들을 색칠할 때까지 다음 과정들을 반복한다:
타일들의 최종 색깔은 샐마가 색칠하는 순서와 상관 없음을 보일 수 있다.
야스민은 모자이크의 타일들의 색깔에 대해서 매우 호기심이 많다. 그녀는 샐마에게 부터 까지 번호가 붙은 개 질의를 묻는다. 질의 ()에서, 모자이크의 부분 직사각형 영역을 다음과 같이 제시한다:
질의에 대한 답은 이 부분 직사각형에 속하는 검은색 타일들의 수이다. 구체적으로, 샐마는 , 를 만족하고 검은색인 타일 가 몇 개 존재하는지 찾아야 한다.
야스민의 질의들에 답하는 프로그램을 작성하시오.
당신은 다음 함수를 구현해야만 한다.
std::vector<long long> mosaic(
std::vector<int> X, std::vector<int> Y,
std::vector<int> T, std::vector<int> B,
std::vector<int> L, std::vector<int> R)
| Subtask | Score | Additional Constraints |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | (인 각 에 대해) | |
| 4 | ||
| 5 | (인 각 에 대해) | |
| 6 | 그리고 (인 각 에 대해) | |
| 7 | (인 각 에 대해) | |
| 8 | 추가적인 제약조건이 없다. |
다음 호출을 생각해보자.
mosaic([1, 0, 1, 0], [1, 1, 0, 1], [0, 2], [3, 3], [0, 0], [3, 2])
이 예제는 아래에 그림으로 보여진다. 왼쪽 그림은 모자이크의 타일들의 색깔을 보여준다. 중간과 오른쪽 그림은 각각 야스민이 첫번째와 두번째 질의에서 물은 부분 직사각형을 보여준다.

질의들(다시 말해서, 그늘진 직사각형 영역 속 의 수)에 대한 답은 각각 과 이다. 그러므로, 함수는 를 반환해야 한다.
N
X[0] X[1] ... X[N-1]
Y[0] Y[1] ... Y[N-1]
Q
T[0] B[0] L[0] R[0]
T[1] B[1] L[1] R[1]
...
T[Q-1] B[Q-1] L[Q-1] R[Q-1]
C[0]
C[1]
...
C[S-1]
여기서, 는 mosaic에 의해 반환된 배열 의 길이이다.
4
1 0 1 0
1 1 0 1
2
0 3 0 3
2 3 0 2
7
3
International Olympiad in Informatics (IOI) 2024, official task package and official Korean translation.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.