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

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

옥수수밭

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

요약
옥수수밭 바깥에서 시작해 이미 수확한 칸을 통해서만 이동할 수 있을 때, 수확 가능한 옥수수 중 가치가 가장 높은 것을 K번 골라 위치를 순서대로 출력한다.
난이도

보통10점 중 7점

유형
힙, 그래프, 시뮬레이션, 누적 합
정답자
아직 제출이 없습니다

문제

옥수수밭 주인 민석이는 한 해 동안 열심히 기른 옥수수를 수확하려고 한다. 옥수수밭은 NN행 MM열의 격자로 생각할 수 있는데, 격자의 각 칸에는 한 그루의 옥수수가 심어져 있다. 민석이는 각 옥수수의 가치를 측정해서 서로 다른 정수 1,2,⋯ ,N×M1,2,\cdots ,N\times M을 부여했다.

민석이는 처음에 옥수수밭 바깥에 위치한다. 민석이는 옥수수밭 바깥을 돌아다니면서 옥수수밭 바깥과 인접한 칸의 옥수수를 수확할 수 있다. 또는 옥수수밭 안에서 옥수수를 수확한 칸으로만 돌아다니면서 현재 위치한 칸에서 상하좌우로 인접한 칸의 옥수수를 수확할 수 있다.

그런데, 민석이는 옥수수의 생산량 조절을 위해서 KK그루의 옥수수만 수확하려고 한다. 민석이는 현재 수확할 수 있는 옥수수 중에서 가장 가치가 높은 옥수수를 수확하는 과정을 KK번 반복한다. 민석이가 수확하는 옥수수의 위치를 순서대로 구해보자.

입력

첫째 줄에 정수 N,M(1≤N,M≤1,000)N, M(1 \le N, M \le 1\\,000)이 공백으로 구분되어 주어진다.

둘째 줄부터 NN개의 줄에 걸쳐 MM개의 정수가 공백으로 구분되어 주어진다. NN개의 줄 중 ii번째 줄의 jj번째 정수는 격자에서 ii번째 줄의 jj번째 칸의 옥수수의 가치를 의미하는 정수 a_ij(1≤a_ij≤N×M)a\_{ij}(1 \le a\_{ij} \le N \times M)다.

마지막 줄에 정수 K(1≤K≤min⁡(N×M,100,000))K(1\le K \le \min(N \times M, 100\\,000))가 주어진다.

출력

KK개의 줄에 민석이가 수확하는 옥수수의 위치 i,j(1≤i≤N;1≤j≤M)i,j(1\le i\le N;1\le j\le M)를 순서대로 출력한다. i,ji,j는 격자의 ii번째 행, jj번째 열을 의미한다.

예제2

  1. 예제 1

    입력
    4 5
    1 18 2 3 4
    12 17 15 20 5
    11 14 19 13 6
    10 9 16 8 7
    6
    
    예상 출력
    1 2
    2 2
    4 3
    3 3
    2 3
    2 4
    
  2. 예제 2

    입력
    3 3
    9 8 1
    4 5 2
    6 3 7
    4
    
    예상 출력
    1 1
    1 2
    3 3
    3 1