아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

설치 작업

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

요약
서비스 시간과 마감 기한이 주어진 작업을 두 가장 큰 지연 벌점 합이 최소가 되도록 순서대로 배치합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 정렬, 그리디
정답자
아직 제출이 없습니다

문제

어느 통신 회사의 서비스 기사는 아침마다 그날 처리할 작업 목록을 받는다. 전화, 인터넷, IPTV를 설치하거나 이미 설치된 설비의 고장을 수리하는 일이다. 각 작업에는 고객이 원하는 완료 기한이 있지만, 작업량이 많아 모든 기한을 지키지는 못할 수 있다.

기사는 한 번에 하나의 작업만 처리한다. 각 작업 JiJ_i 에는 처리 시간 sis_i 와 기한 did_i 가 주어진다. 시각 00 에서 시작해 작업들을 어떤 순서로 하나씩 이어서 처리하며, 한 번 시작한 작업은 끝까지 처리한다. 작업 JiJ_i 가 시각 CiC_i 에 끝나면 그 벌점은 max⁡(0,Ci−di)\max(0, C_i - d_i), 즉 기한을 얼마나 넘겼는지로 정의된다. 모든 값은 0<si≤di0 < s_i \le d_i 를 만족하는 양의 정수이다.

벌점이 가장 큰 두 작업의 벌점 합이 최소가 되도록 작업 순서를 정하라.

예를 들어 i=1,…,6i = 1, \dots, 6 에 대해 (si,di)(s_i, d_i) 가 각각 (1,7),(4,7),(2,4),(2,15),(3,5),(3,8)(1, 7), (4, 7), (2, 4), (2, 15), (3, 5), (3, 8) 인 여섯 개의 작업을 생각하자. 그림 1은 가장 큰 두 벌점의 합을 최소로 만드는 한 스케줄을 보여 준다. 여기서 가장 큰 두 벌점은 J2J_2 와 J6J_6 의 것으로 각각 66 과 11 이며, 그 합은 77 이다.

그림 1: 예시의 최적 스케줄

입력

첫째 줄에 테스트 케이스의 수 TT 가 주어진다.

각 테스트 케이스의 첫째 줄에는 작업의 수 nn (1≤n≤5001 \le n \le 500) 이 주어진다. 이어지는 nn 개의 줄 중 ii 번째 줄에는 작업 JiJ_i 의 처리 시간 sis_i 와 기한 did_i (1≤si≤di≤100001 \le s_i \le d_i \le 10000) 가 공백으로 구분되어 주어진다.

출력

각 테스트 케이스마다 최적 스케줄에서 가장 큰 두 벌점의 합을 한 줄에 출력한다.

예제5

  1. 예제 1

    입력
    3
    6
    1 7
    4 7
    2 4
    2 15
    3 5
    3 8
    7
    2 17
    2 11
    3 4
    3 20
    1 20
    4 7
    5 14
    10
    2 5
    2 9
    5 10
    3 11
    3 4
    4 21
    1 7
    2 9
    2 11
    2 23
    
    예상 출력
    7
    0
    14
    
  2. 예제 2

    입력
    1
    1
    7 9
    
    예상 출력
    0
    
  3. 예제 3

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

    입력
    1
    5
    1 50
    1 50
    1 50
    1 50
    1 50
    
    예상 출력
    0
    
  5. 예제 5

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