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

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

슈퍼컴퓨터

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

요약
도착 시각과 필요한 프로세서 시간이 주어진 작업들을 선점 가능한 단일 프로세서에서 처리해 완료 시각에서 도착 시각을 뺀 값의 합이 최소가 되도록 배치한다.
난이도

어려움10점 중 8점

유형
그리디, 정렬, 힙, 시뮬레이션
정답자
아직 제출이 없습니다

문제

바이토리치(BajtoLicz)는 매우 빠른 서버 BL87을 보유하고 있다. 이 서버의 성능을 활용하기 위해, 회사는 고객이 보낸 프로그램을 서버에서 대신 실행해 주는 서비스를 시작하기로 했다. 보내진 각 프로그램은 실행을 위해 일정한 계산량(프로세서 시간)을 필요로 한다.

프로그램의 실행 시간은 회사가 그 프로그램을 받은 순간부터 실행이 끝나는 순간까지로 계산한다. 즉, 한 프로그램의 실행 시간은 (완료 시각) −- (도착 시각) 이다.

서버 BL87은 여러 프로그램을 동시에 병렬로 실행할 수 있으며, 실행 중인 각 프로그램은 (우선순위에 따라 정해지는) 프로세서 성능의 일정 비율을 배정받는다. 프로세서 전체 성능은 100%로 고정되어 있어, 어느 순간에든 실행 중인 프로그램들에 배분된 비율의 합은 100%를 넘을 수 없다. 서로 다른 우선순위에 따라 프로그램의 실행을 중단하고 다시 이어서 실행하는 것도 가능하다.

주어진 작업 목록에 대해, 모든 작업의 실행 시간의 합을 최소로 만드는 값을 구하는 프로그램을 작성하여라.

작성할 프로그램은 다음을 수행한다.

  • 서버에서 실행해야 하는 프로그램의 개수와 각 프로그램의 정보를 입력받는다.
  • 모든 작업의 실행 시간의 합의 최솟값을 구한다.
  • 그 결과를 출력한다.

입력

첫째 줄에는 실행할 프로그램의 개수를 나타내는 정수 nn (1≤n≤1000001 \le n \le 100000)이 주어진다. 다음 nn개의 각 줄에는 두 정수 aa와 bb (0≤a,b≤1090 \le a, b \le 10^9)가 주어지며, 각각 그 프로그램이 도착한 시각과 그 프로그램의 실행에 필요한 프로세서 시간을 의미한다.

출력

첫째 줄에 모든 프로그램의 실행 시간의 합의 최솟값을 나타내는 정수 kk 하나를 출력한다.

예제3

  1. 예제 1

    입력
    3
    0 6
    20 8
    15 10
    
    예상 출력
    29
    
  2. 예제 2

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

    입력
    3
    0 3
    0 1
    0 2
    
    예상 출력
    10