홀수 찾아 삼만리

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

요약
좌표평면 위 N개 여행지를 모두 한 번씩 방문하는 순열 중 맨해튼 거리 합이 홀수가 되는 순서를 찾고, 없으면 불가능을 판정한다.
난이도

보통10점 중 7점

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

문제

홀수를 좋아하는 홀스는 홀수를 찾아 여행을 떠나고 싶다. 22차원 좌표평면 위에 11번부터 NN번까지 번호가 부여된 여행지 NN개가 존재하고, ii번 여행지는 (x_i,y_i)(x\_{i}, y\_{i})에 위치한다.

홀스는 원하는 여행지에서 시작하여 NN개의 여행지를 모두 한 번씩 방문하고 끝나는 여행 계획을 세우려고 한다. 이때, 홀스가 여행 계획에 따라 이동해야 할 거리의 합이 홀수가 되도록 여행 계획을 세울 수 있을지 찾아보고, 만약 가능하다면 여행 계획을 출력해 보자.

임의의 두 여행지 AA, BB 사이의 거리는 ∣x_A−x_B∣+∣y_A−y_B∣|x\_{A}-x\_{B}|+|y\_{A}-y\_{B}|로 정의된다.

입력

첫째 줄에 여행지의 개수 NN이 주어진다. (2≤N≤300 000)(2 \leq N \leq 300\ 000)

다음 NN개의 줄에 ii번 여행지의 좌표 x_ix\_{i}, y_iy\_{i}가 공백으로 구분되어 주어진다. (1≤x_i,y_i≤106)(1 \leq x\_{i}, y\_{i} \leq 10^6)

같은 좌표에 둘 이상의 여행지가 존재하지 않으며, 모든 입력은 정수이다.

출력

첫째 줄에 홀스가 여행 계획을 세울 수 있으면 YES, 없으면 NO를 출력한다.

만약 여행 계획을 세울 수 있다면 다음 줄에 방문한 여행지의 순서를 의미하는 NN개의 여행지 번호를 공백으로 구분하여 순서대로 출력한다.

정답이 여러 가지인 경우 그중 아무거나 출력한다.

예제2

  1. 예제 1

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

    입력
    2
    4 4
    1 1
    
    예상 출력
    NO