아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

도넛 드론

시간 제한8초메모리 제한512 MB

요약
토러스 격자에서 드론이 매 단계마다 오른쪽 세 칸 중 가장 높은 칸으로 이동할 때, 최대 10^9번의 이동 질의와 고도 변경을 처리하며 드론의 최종 위치를 구한다.
난이도

어려움10점 중 8점

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

문제

도넛 모양 행성을 탐사하는 드론의 시뮬레이션을 만든다. 드론이 움직이는 곳은 토러스 격자, 즉 가로와 세로 양쪽으로 순환하며 이어지는 직사각형 격자다. 격자의 행은 위에서 아래로 11번부터 rr번까지, 열은 왼쪽에서 오른쪽으로 11번부터 cc번까지 번호를 매긴다. 각 칸에는 고도가 하나씩 있고, 고도는 양의 정수다.

토러스 격자

드론은 처음에 11행 11열 칸에 있다. 한 번 이동할 때마다 드론은 세 칸을 본다. 바로 오른쪽 칸, 오른쪽 아래 대각선 칸, 오른쪽 위 대각선 칸이다. 행 번호와 열 번호는 순환하므로 rr행 아래가 11행이고 cc열 오른쪽이 11열이다. 드론은 이 세 칸 중 고도가 가장 높은 칸으로 날아간다.

시뮬레이션 중에는 두 종류의 사건이 일어난다.

  • move k: 드론이 kk번 이동한다.
  • change a b e: aa행 bb열 칸의 고도가 ee로 바뀐다.

각 move 사건이 끝난 직후 드론의 위치를 구한다.

어느 시점에서든 같은 열에서 순환하며 연속한 세 칸의 고도는 서로 모두 다르다. 따라서 드론이 날아갈 칸은 언제나 하나로 정해진다.

두 번째 예제 입력의 move 사건 두 번에서 드론이 지나간 경로

입력

첫 줄에 격자의 행 개수 rr과 열 개수 cc가 주어진다 (3≤r,c≤20003 \le r, c \le 2000). 이어지는 rr개 줄 중 ii번째 줄에는 ii행 칸의 처음 고도 ei,1,ei,2,…,ei,ce_{i,1}, e_{i,2}, \ldots, e_{i,c}가 주어진다 (1≤ei,j≤1091 \le e_{i,j} \le 10^9).

다음 줄에 사건의 개수 mm이 주어진다 (1≤m≤50001 \le m \le 5000). 이어지는 mm개 줄 중 jj번째 줄에는 jj번째 사건이 주어진다. 사건의 형태는 move k (1≤k≤1091 \le k \le 10^9) 또는 change a b e (1≤a≤r1 \le a \le r, 1≤b≤c1 \le b \le c, 1≤e≤1091 \le e \le 10^9)다.

출력

입력에 있는 move 사건마다 한 줄씩, 사건이 나온 순서대로 출력한다. jj번째 move 사건에 해당하는 줄에는 그 사건이 끝난 직후 드론이 있는 칸의 행 번호와 열 번호를 공백 하나로 구분해 출력한다.

예제2

  1. 예제 1

    입력
    4 4
    1 2 9 3
    3 5 4 8
    4 3 2 7
    5 8 1 6
    4
    move 1
    move 1
    change 1 4 100
    move 1
    
    예상 출력
    4 2
    1 3
    1 4
    
  2. 예제 2

    입력
    3 4
    10 20 30 40
    50 60 70 80
    90 93 95 99
    3
    move 4
    change 2 1 100
    move 4
    
    예상 출력
    3 1
    2 1