시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
4 초 (언어별 추가 시간 없음) 1024 MB 75 36 8 25.000%

문제

세로 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 연산자의 뜻은 이 문제를 해결하는 것과 아무 연관이 없다.

예제 입력 1

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

예제 출력 1

39263476

출처