만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

낚시

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

요약
격자의 처음 H개 행에서 열 X부터 Y까지 안의 연속된 열 구간 합 중 가장 큰 값을 구합니다. 질의는 이전 답으로 암호화되어 있습니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 누적 합, 동적 계획법
정답자
아직 제출이 없습니다

문제

해안 근처에 작은 마을이 있다. 어부들은 바다를 N×MN × M 격자로 나누어 지도를 만든다. 첫 번째 행이 해안에 가장 가깝고, 마지막 행이 가장 멀다. 어부들은 바다에 떠다니는 물고기와 다른 물체의 움직임을 추적한다. 바다 대부분은 비어 있지만 관심 칸이 KK개 있다. ii번째 칸의 위치는 행 RiR_i, 열 CiC_i이다. 어부들은 ii번째 칸에서 낚시를 하면 얻는 어획량이 ViV_i라고 추정한다. 그 구역에 원하지 않는 물체가 주로 떠 있으면 ViV_i는 0이거나 음수일 수 있다. 나머지 칸의 값은 모두 0이다.

지방 의회는 매일 열 XX부터 YY까지를 포함하고 해안에서 바다 쪽으로 HH행 뻗은 직사각형 낚시 구역을 승인한다. 어부들은 승인된 구역에서 낚시하려고 길이가 정확히 HH인 그물을 준비한다. 그물 길이는 고정되어 있지만, 폭 WW는 Y−X+1Y - X + 1을 넘지 않는 범위에서 자유롭게 펼 수 있다. 어부들은 바다에 대한 정보를 바탕으로 승인된 구역 안에서 그물을 놓을 위치를 고르고, 그물이 덮는 칸 값의 합이 최대가 되게 한다.

다음 QQ일 동안 승인된 낚시 구역마다 최대 어획량을 구하는 프로그램을 작성하라. 칸 값은 일정하게 유지되며, 이전 날의 낚시로 줄어들지 않는다고 가정한다.

입력

첫 줄에 행 수 NN, 열 수 MM, 값이 지정된 칸 수 KK가 주어진다. 이어지는 KK개 줄에는 각 칸의 행 RiR_i, 열 CiC_i, 값 ViV_i가 공백으로 구분되어 주어진다. 행은 1부터 NN까지, 열은 1부터 MM까지 번호가 매겨진다. 모든 ViV_i는 정수이다.

다음 줄에 질의 수 QQ가 주어진다. jj번째 질의는 정수 세 개 Aj′A'_j, Xj′X'_j, Yj′Y'_j로 주어진다. 프로그램이 주어진 순서대로 답하도록 질의는 암호화되어 있으며, 실제 질의는 다음과 같이 계산한다.

Hj=Hj′⊕Aj−3H_j = H'_j \oplus A_{j-3}

Xj=Xj′⊕Aj−2X_j = X'_j \oplus A_{j-2}

Yj=Yj′⊕Aj−1Y_j = Y'_j \oplus A_{j-1}

여기서 AjA_j는 jj번째 질의의 답이며, j≤0j \le 0이면 AjA_j는 0이다. ⊕\oplus는 비트 XOR 연산이다. 프로그램은 처음 HjH_j행에 걸쳐 있고 열 XjX_j부터 YjY_j 사이의 일부 구간을 포함하는 구역 중에서 최대 어획량을 찾아야 한다.

출력

각 질의마다 최대 어획량을 한 줄에 출력한다. 어부는 그물을 비워 두어 값 0을 택할 수도 있다.

제한

  • 1≤N,M,K,Q≤300 0001 \le N, M, K, Q \le 300\,000
  • ∣Vi∣≤1000|V_i| \le 1000

힌트

디코딩된 질의 목록:

5 1 5
10 1 7
7 6 6
8 2 6
4 1 6
3 1 2

예제1

  1. 예제 1

    입력
    10 7
    12
    2 6 -5
    3 3 3
    4 2 -2
    4 6 2
    5 3 -1
    5 5 5
    7 1 8
    7 7 4
    8 4 -3
    8 5 1
    9 6 -4
    10 3 2
    6
    5 1 5
    10 1 0
    7 1 11
    15 15 6
    9 1 0
    3 7 1
    
    예상 출력
    7
    13
    0
    6
    3
    0