소용돌이 문양

시간 제한3초메모리 제한1024 MB

요약
K개의 소용돌이 문양이 각 칸을 몇 번 덮는지 세고, 격자 전체에 대한 XOR 가중 합을 출력한다.
난이도

어려움10점 중 8점

유형
누적 합, 구현, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

시간이 흐르며, 사람들은 어느 순간부터 소용돌이 문양에 관심을 가졌다. 빛의 흐름에서, 돌 무늬에서, 구조물의 바닥에서, 그들은 소용돌이 문양을 찾아냈다.

처음에는 작은 징후처럼 보였지만, 곧 소용돌이는 섬 곳곳에 나타나기 시작했다.

남겨진 소용돌이의 흔적을 따라가고, 그들이 마주한 형상을 복원하여라.


광장의 바닥에는 N×MN\times M 크기의 격자가 새겨져 있다. 이때 위에서부터 rr번째 행, 왼쪽에서부터 cc번째 열의 칸을 (r,c)(r,c)로 표기한다.

최근 이 격자 위에서 총 KK개의 소용돌이 문양이 관측되었다.

소용돌이 문양은 특정 위치를 중심으로 하여 다양한 반지름을 가진다. 아래 그림은 반지름이 각각 00, 22, 44인 소용돌이 문양의 예시이다.

(격자선은 이해를 돕기 위해 그려졌으며, 색칠된 칸이 실제 소용돌이 문양을 나타낸다.)

격자의 각 칸이 몇 개의 소용돌이 문양에 포함되었는지 알아내보자.

입력

첫 줄에 격자의 크기를 나타내는 두 정수 NN, MM과 소용돌이 문양의 개수 KK가 주어진다.

둘째 줄에는 정수 pp, qq가 주어진다.

이후 KK개의 줄에 걸쳐, 각 줄에는 각각 세 정수 r_ir\_i, c_ic\_i, d_id\_i가 주어진다. 이는 ii번째로 관측된 소용돌이 문양이 칸 (r_i,c_i)(r\_i,c\_i)를 중심으로 한 반지름이 d_id\_i인 소용돌이 문양임을 의미한다.

출력

1≤r≤N,1≤c≤M1\le r\le N,1\le c\le M인 모든 (r,c)(r,c)에 대해, A_rcA\_{rc}를 칸 (r,c)(r,c)가 포함되는 소용돌이 문양의 수라고 정의하자. A_rcA\_{rc}의 모든 값을 출력하려면 많은 시간이 소요되므로, 다음 값을 대신 출력한다.

\[\sum_{r=1}^N\sum_{c=1}^M\left( (r\times p)\oplus(c\times q)\oplus A_{rc} \right)\]

단, ⊕\oplus는 이진 XOR 연산을 의미한다.

제한

  • 2≤N≤20002\le N\le 2000
  • 2≤M≤20002\le M\le 2000
  • 1≤K≤1061\le K\le 10^6
  • 0≤p≤1060\le p\le 10^6
  • 0≤q≤1060\le q\le 10^6
  • 0≤d_i0\le d\_i (1≤i≤K)(1\le i\le K)
  • d_id\_i는 짝수 (1≤i≤K)(1\le i\le K)
  • 1≤r_i−d_i1\le r\_i-d\_i (1≤i≤K)(1\le i\le K)
  • r_i+d_i≤Nr\_i+d\_i\le N (1≤i≤K)(1\le i\le K)
  • 1≤c_i−d_i1\le c\_i-d\_i (1≤i≤K)(1\le i\le K)
  • c_i+d_i≤Mc\_i+d\_i\le M (1≤i≤K)(1\le i\le K)

힌트

소용돌이 문양의 엄밀한 정의는 다음과 같다.

반지름이 00인 소용돌이 문양은 1×11\times 1 크기의 격자 한 칸으로 정의된다.

22 이상의 모든 짝수 dd에 대해, 반지름이 dd인 소용돌이 문양은 다음과 같은 방식으로 만들 수 있다.

  • 크기가 (2d+1)×(2d+1)(2d+1)\times(2d+1)인 격자를 준비한다.
  • 반지름이 d−2d-2인 소용돌이 문양을 격자의 중심에 색칠한다.
  • 위에서 색칠한 칸 중 가장 오른쪽 아래에 있는 칸에서 시작해, 오른쪽으로 두 칸을 더 색칠한다.
  • 마지막으로 색칠한 칸에서 시작해, 위로 2d−22d-2칸, 왼쪽으로 2d2d칸, 아래로 2d2d칸, 오른쪽으로 2d2d칸을 차례로 색칠한다.

위와 같은 방식으로 d=4d=4인 소용돌이 문양을 만들면 아래와 같다.

예제2

  1. 예제 1

    입력
    11 9 3
    1 2
    5 6 2
    7 5 4
    1 1 0
    
    예상 출력
    1063
    
  2. 예제 2

    입력
    37 28 1
    79 1101
    14 11 8
    
    예상 출력
    16529317