시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
4 초 (추가 시간 없음) | 1024 MB | 101 | 42 | 12 | 29.268% |
세로 200000, 가로 200000 크기의 값이 전부 0으로 채워진 2차원 배열이 있다. 이 배열에서 행 번호는 아래로 갈 수록, 열 번호는 오른쪽으로 갈 수록 증가한다. i번째 행, j번째 열에 해당되는 위치는 (i,j)로 표현한다.
종영이는 여러분이 고통을 받는 모습을 보기 위해 N번 (X1,Y1) 와 (X2,Y2) 사이의 모든 위치에 해당되는 값에 V를 더하는 업데이트 연산을 했다.
당신이 할 일은 Q번 (X1,Y1) 와 (X2,Y2) 사이의 모든 위치에 해당되는 값의 합을 구하는 쿼리를 수행하는 것이다.
첫 줄에 N과 Q가 주어진다. (1 ≤ N, Q ≤ 2.5×105)
N개의 줄에 걸쳐 종영이의 업데이트에 해당하는 X1, Y1, X2, Y2, V가 순서대로 주어진다. (1 ≤ X1 ≤ X2 ≤ 2×105, 1 ≤ Y1 ≤ Y2 ≤ 2×105, 1 ≤ V ≤ 10)
그 후, Q개의 줄에 걸쳐 쿼리에 해당하는 X1,Y1,X2,Y2 가 순서대로 주어진다. (1 ≤ X1 ≤ X2 ≤ 2×105, 1 ≤ Y1 ≤ Y2 ≤ 2×105)
모든 쿼리의 답을 XOR한 값 하나를 출력한다. 이는 C, C++ 상에서는 ^ 연산자로 표현된다. XOR 연산자의 뜻은 이 문제를 해결하는 것과 아무 연관이 없다.
5 5 522 1426 2758 2745 2 81 629 4167 3705 2 2775 3982 4503 4878 7 2156 902 3822 2544 7 3857 1918 4203 3364 9 3506 1568 4860 2317 16 1263 30 3397 1449 310 4071 3507 2068 3580 4378 3675 4218 4328 4272 4475
39263476