만드는 중입니다

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

헤븐스 키친

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

요약
두 chef가 붙는 날의 평점을 (C_A+C_B)/|P_A-P_B|의 내림으로 정의할 때, N-1경기의 평점 합을 최대로 만드는 대진과 승패를 정하고, 문제가 정한 두 규칙으로 유일하게 결정되는 대진표를 출력한다.
난이도

어려움10점 중 8점

유형
최소 신장 트리, 유니온 파인드, 그리디, 정렬
정답자
아직 제출이 없습니다

문제

남규는 입대를 기다리며 하루 종일 영상을 본다. 가장 즐겨 보는 프로그램은 요리 대결 방송인 헤븐스 키친이다. 이 방송에는 요리사 NN명이 출연하고, 매일 그중 두 명이 요리 대결을 한 판 벌인다. 이긴 요리사는 천국으로 떠나고, 진 요리사는 남아서 다음 대결을 계속한다. 마지막까지 혼자 남은 요리사는 지옥으로 보내진다.

요리사에게는 1번부터 NN번까지 번호가 붙어 있다. ii번 요리사의 요리 실력은 PiP_i, 인기도는 CiC_i이다. 요리 실력이 같은 두 요리사는 없다.

그날의 시청률은 그날 대결하는 두 요리사만으로 정해진다. 요리사 AA와 요리사 BB가 대결하면 그날의 시청률은 ⌊CA+CB∣PA−PB∣⌋\left\lfloor \frac{C_A + C_B}{|P_A - P_B|} \right\rfloor이다. ⌊x⌋\lfloor x \rfloor는 xx보다 작거나 같은 가장 큰 정수이다.

대결의 승패는 요리 실력이나 인기도와 상관없이 정해진다. 어느 두 요리사가 맞붙을지도, 그중 누가 이길지도 마음대로 정할 수 있다.

대결 N−1N-1번이 끝나면 요리사 한 명만 남는다. 대결 순서와 승패를 잘 정해서 N−1N-1일 동안의 시청률의 합을 최대로 만들고, 그때의 대진을 출력하자.

입력

첫째 줄에 요리사의 수 NN이 주어진다. (2≤N≤10002 \le N \le 1000)

이어지는 NN개의 줄 중 ii번째 줄에 ii번 요리사의 요리 실력 PiP_i와 인기도 CiC_i가 공백을 사이에 두고 주어진다. (0≤Pi,Ci≤1090 \le P_i, C_i \le 10^9, i≠ji \ne j이면 Pi≠PjP_i \ne P_j)

출력

첫째 줄에 시청률의 합의 최댓값을 출력한다.

둘째 줄부터 N−1N-1개의 줄에 대결이 열리는 순서대로 진 요리사의 번호와 이긴 요리사의 번호를 공백을 사이에 두고 출력한다. 이긴 요리사가 천국으로 떠나고 진 요리사가 남는다는 점에 주의한다.

합이 최대가 되는 대진은 여럿일 수 있으므로, 다음 두 규칙으로 정해지는 대진 하나만 정답으로 인정한다.

첫째, 어느 두 요리사가 맞붙는지는 이렇게 정한다. 처음에 요리사 NN명은 각자 자기 혼자인 그룹에 속한다. i<ji < j인 모든 쌍 (i,j)(i, j)를 그 둘이 대결할 때의 시청률이 큰 순서로 살펴본다. 시청률이 같으면 ii가 작은 쌍을 먼저 보고, ii도 같으면 jj가 작은 쌍을 먼저 본다. 이 순서로 쌍을 하나씩 확인하면서 두 요리사가 서로 다른 그룹에 있으면 그 쌍을 대진에 넣고 두 그룹을 합친다. 같은 그룹이면 건너뛴다. 이렇게 하면 대결 N−1N-1번이 정해진다.

둘째, 대결이 열리는 순서는 이렇게 정한다. 천국으로 떠나는 요리사에게 아직 치르지 않은 대결이 남아 있으면 안 되므로, 남은 대결이 정확히 하나인 요리사만 그 대결에서 이길 수 있다. 그런 요리사가 여럿이면 출력할 두 수를 (진 요리사, 이긴 요리사) 쌍으로 보고 사전순으로 가장 앞서는 대결을 먼저 연다.

예제2

  1. 예제 1

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

    입력
    4
    0 5
    2 5
    4 5
    6 5
    
    예상 출력
    15
    2 1
    3 2
    3 4