프로세서

아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

프로세서는 동적 속도 조절을 지원한다. 임의의 양의 정수 속도로 동작할 수 있지만, 속도가 높을수록 전력 소모가 커진다. 여러 프로그램을 전력 효율적으로 실행하려면, 프로세서가 사용하는 최대 속도를 최소로 만드는 스케줄이 필요하다.

프로세서는 nn개의 프로그램을 실행해야 한다. 각 프로그램 PiP_i에는 시작 시각 rir_i, 마감 시각 did_i, 작업량 wiw_i가 주어진다. 작업량 wiw_i 전체는 반드시 구간 [ri,di][r_i, d_i] 안에서 처리되어야 한다. 프로세서는 선점형이다. 즉, 실행 중인 프로그램을 잠시 멈췄다가 나중에 멈춘 지점부터 이어서 실행할 수 있으므로, 한 프로그램을 반드시 연속된 한 구간에서 실행할 필요는 없다. 프로그램 PiP_i를 일정한 속도 ss로 실행하면 wi/sw_i / s의 시간이 걸린다. 프로세서는 어느 순간에도 최대 한 개의 프로그램만 실행하며, 시간에 따라 속도를 바꿀 수 있지만 속도는 항상 양의 정수여야 한다. 속도에는 상한이 없으므로 모든 프로그램은 언제나 완료할 수 있다.

모든 프로그램을 완료하면서 프로세서가 사용하는 최대 속도를 최소로 만드는 스케줄을 구하라.

예를 들어, 구간 [ri,di][r_i, d_i]와 작업량 wiw_i가 다음과 같은 다섯 개의 프로그램을 생각하자. [1,4][1, 4]w1=2w_1 = 2, [3,6][3, 6]w2=3w_2 = 3, [4,5][4, 5]w3=2w_3 = 2, [4,7][4, 7]w4=2w_4 = 2, [5,8][5, 8]w5=1w_5 = 1. 아래 그림은 최대 속도가 22인 스케줄을 보여 주며, 이 예시에서는 이 값이 최적이다.

그림 1

입력

첫째 줄에 테스트 케이스의 수 TT가 주어진다 (1T201 \le T \le 20).

각 테스트 케이스의 첫째 줄에는 프로그램의 수를 나타내는 정수 nn이 주어진다 (1n100001 \le n \le 10000). 이어지는 nn개의 줄 중 ii번째 줄에는 세 정수 rir_i, did_i, wiw_i가 주어지며, 각각 프로그램 PiP_i의 시작 시각, 마감 시각, 작업량을 뜻한다. 이때 1ri<di200001 \le r_i < d_i \le 20000이고 1wi10001 \le w_i \le 1000이다.

출력

각 테스트 케이스마다 한 줄에, 모든 프로그램을 제때 완료하는 스케줄들 중에서 최대 속도가 될 수 있는 최솟값을 출력한다.