의식의 광장

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

요약
가로로 움직이는 N개의 단위 정사각형에 서로 다른 이동 거리를 배정해 이동 중 겹치지 않고 도착 열도 모두 다르게 만든다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 구현
정답자
아직 제출이 없습니다

문제

도시가 완성된 뒤, 사람들은 그 빛을 기념하기 위한 의식을 열었다. 마을의 광장에는 작은 빛의 점들이 놓였고, 각각은 고유한 빛을 머금은 채 조용히 빛났다.

이제, 의식의 다음 단계가 시작된다. 각 빛은 정해진 방향으로 흘러가며, 새로운 자리를 비추기 시작한다. 빛은 그 이동 경로를 따라 퍼지며, 그 길이와 흐름은 서로 겹치지 않도록 조율되어야 한다.

그들이 정리한 빛의 방향과 흐름을 되짚고, 빛이 퍼져나가는 장면을 다시 완성해 보아라.


광장의 바닥은 격자로 이루어져 있으며, 위아래로는 총 HH행이며 좌우로는 충분히 넓다. 위에서부터 rr번째 행, 왼쪽에서부터 cc번째 열의 칸을 (r,c)(r,c)로 표기한다.

사람들은 이곳에 NN개의 빛을 배치했다. 의식의 흐름에 따라, 각 빛은 오른쪽 방향(열 번호가 증가하는 방향)으로 일정 거리만큼 이동해야 한다.

빛의 움직임을 구현하는 것은 어려운 일이기 때문에, 몇 가지 제약 조건이 있다.

  • 각 빛은 1×11\times 1 크기의 정사각형 판의 중심에 고정되어 있다.
  • NN개의 빛이 놓인 판은 각각 11 이상 NN 이하의 서로 다른 정수 거리만큼 이동해야 한다.
  • NN개의 판은 동시에 이동을 시작하고, 동시에 도착하며, 이동 중에는 일정한 속도를 유지해야 한다.
  • 이동 중 두 판이 겹쳐서는 안 된다. 단, 경계가 닿는 것은 괜찮다.
  • 이동이 끝난 후, 모든 빛은 서로 다른 열에 위치해야 한다.

예를 들어, H=2H=2, N=4N=4이고, 빛의 시작 위치가 각각 (1,1),(1,3),(2,2),(2,3)(1,1) ,(1,3) ,(2,2) ,(2,3)인 경우를 생각해 보자. 아래 그림에서 각 빛 판의 위치는 서로 다른 색의 정사각형으로 표시되어 있다.

이때 다음과 같은 방식으로 이동 거리를 배정하면 모든 조건을 만족하게 된다.

번호시작 위치이동 거리최종 위치
11(1,1)(1, 1)22(1,3)(1, 3)
22(1,3)(1, 3)11(1,4)(1, 4)
33(2,2)(2, 2)33(2,5)(2, 5)
44(2,3)(2, 3)44(2,7)(2, 7)

아래는 빛의 이동 과정을 시간 순서대로 나타낸 그림이다. 각 그림은 이동이 시작된 시점, 이동 중간의 시점, 이동이 끝난 시점의 빛의 위치를 나타낸다.

빛의 흐름이 겹치지 않도록 이동 거리를 배정할 수 있는지 판단하고, 가능하다면 그 방법을 구하라.

입력

첫 줄에 두 정수 HH와 NN이 공백으로 구분되어 주어진다.

이후 NN개의 줄에 걸쳐, 각 빛의 시작 위치를 나타내는 두 정수 r_ir\_i, c_ic\_i가 공백으로 구분되어 주어진다. 이는 ii번째 빛의 시작 위치가 (r_i,c_i)(r\_i,c\_i)라는 뜻이다.

출력

만약 조건을 만족하도록 빛의 이동 거리를 배정할 수 있다면, 첫째 줄에 YES를 출력한다.

둘째 줄에는 NN개의 정수 B_1,B_2,⋯ ,B_NB\_1,B\_2,\cdots ,B\_N을 공백으로 구분해 출력한다. 이는 ii번째 빛이 오른쪽으로 B_iB\_i만큼 움직여야 한다는 의미이다. 가능한 방법이 여러 가지라면 그중 아무것이나 출력해도 좋다.

만약 조건을 만족하도록 빛의 이동 거리를 배정할 수 없다면, 첫째 줄에 NO를 출력한다.

제한

  • 1≤H≤1091\le H\le 10^9
  • 2≤N≤2×1052\le N\le 2\times 10^5
  • 1≤r_i≤H1\le r\_i\le H (1≤i≤N)(1\le i\le N)
  • 1≤c_i≤1091\le c\_i\le 10^9 (1≤i≤N)(1\le i\le N)
  • (r_i,c_i)≠(r_j,c_j)(r\_i,c\_i)\neq(r\_j,c\_j) (1≤i\<j≤N)(1\le i\<j\le N)

예제3

  1. 예제 1

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

    입력
    10 3
    7 1000000000
    9 1000000000
    3 1000000000
    
    예상 출력
    YES
    2 1 3
    
  3. 예제 3

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