만드는 중입니다

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

양자 텔레포테이션

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

요약
생존한 프로세서만 거쳐 (1, 1)에서 (n, m)까지 정보를 옮길 때, 각 전송 비용이 좌표 차이의 최대값을 지수로 한 2의 거듭제곱인 경로 중 총비용이 가장 적은 경로를 구합니다.
난이도

보통10점 중 6점

유형
최단 경로, 그래프
정답자
아직 제출이 없습니다

문제

IT 회사의 연구진이 양자 슈퍼컴퓨터를 개발했다. 시제품은 nn개의 행과 mm개의 열로 이루어진 격자 모양이며, 양자 프로세서는 모두 n×mn \times m개이다. ii행 jj열의 프로세서는 (i,j)(i, j)로 나타낸다.

연구진이 가동을 마친 뒤 정전이 발생해 일부 프로세서가 손상되었다. 살아남은 프로세서는 kk개뿐이다.

계산 결과는 프로세서 (1,1)(1, 1)의 메모리에 있고, 출력 장치는 프로세서 (n,m)(n, m)에 연결되어 있다. 프로세서끼리는 양자 텔레포테이션으로 정보를 주고받는다. 거리가 멀어질수록 전송이 불안정해져서 추가 에너지가 든다. 프로세서 (xi,yi)(x_i, y_i)에서 (xj,yj)(x_j, y_j)로 정보를 옮기는 데 2max⁡(∣xi−xj∣,∣yi−yj∣)2^{\max(|x_i - x_j|, |y_i - y_j|)} 단위의 에너지가 필요하다. 연구진은 총 에너지를 최소로 하여 (1,1)(1, 1)의 정보를 (n,m)(n, m)으로 옮기려 한다. 중간에는 살아남은 다른 프로세서를 거쳐 갈 수 있다. 손상된 프로세서는 사용할 수 없다.

입력

첫 줄에 정수 nn, mm, kk가 주어진다. 각각 격자의 행 수, 열 수, 살아남은 프로세서의 수이다 (2≤n,m,k≤100002 \le n, m, k \le 10000).

이어지는 kk개의 줄 중 ii번째 줄에는 ii번째 살아남은 프로세서의 행 번호 xix_i와 열 번호 yiy_i가 주어진다 (1≤xi≤n1 \le x_i \le n, 1≤yi≤m1 \le y_i \le m).

(x1,y1)=(1,1)(x_1, y_1) = (1, 1)이고 (xk,yk)=(n,m)(x_k, y_k) = (n, m)이 보장된다. 모든 프로세서는 서로 다른 칸에 있다.

출력

첫 줄에 전송에 사용하는 프로세서의 수 LL을 출력한다.

둘째 줄에는 정보를 받는 순서대로 프로세서 번호 LL개를 출력한다. 첫 번째는 1, 마지막은 kk여야 한다.

에너지를 최소로 하는 전송 방법이 여럿이면 그중 아무것이나 출력해도 된다.

예제2

  1. 예제 1

    입력
    4 5 3
    1 1
    2 3
    4 5
    
    예상 출력
    3
    1 2 3
    
  2. 예제 2

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