페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#3415

비행기 탑승 3s 128MB

문제

지난 주 골프 휴가가 그리 맘에 들지 않았던 정올 학생들이 이번엔 해외 여행을 가기로 했다.

N명의 학생들이 비행기를 타기 위해 일렬로 줄을 서있다.

 

비행기는 수직선에서 x=1부터 x=N까지의 좌석을 가지고 있으며, 학생들은 N번부터 순서대로 x=0부터 왼쪽으로 서있다.

예를 들어 N=4라면, 4번 학생은 x=0에, 3번 학생은 x=-1에, 2번 학생은 x=-2에, 1번 학생은 x=-3에 서 있는 것이다.

학생들은 각자 배정받은 좌석 번호인 S_i를 가지고 있다.

매 초마다, 학생들은 1만큼 오른쪽으로 움직인다.

이 때 본인에게 배정받은 좌석에 위치한 학생은 T_i초동안 캐비닛에 가방을 넣고, 자리에 앉는다.

T_i초 동안은 그 뒤에 서있는 학생은 앞으로 움직일 수 없으며,

자연스럽게 그 뒤에 있는 학생들도 움직일 수 없다.

학생들이 모두 제자리에 앉을 때까지 걸리는 시간을 출력하는 프로그램을 작성하라.


입력

첫 줄에 학생들의 수인 정수 N(1<=N<=200,000)이 주어진다.

다음 N 줄에 걸쳐서, 학생 i의 배정받은 좌석인 S_i(1<=S_i<=N)와 자리에 앉는데 걸리는 시간인 T_i(0<=T_i<=10억(T_i의 합))가 공백을 사이에 두고 주어진다.

두 학생 이상이 같은 자리(S_i)를 배정받는 일은 없다.


출력

표준 출력으로 모든 학생들이 제자리에 앉을 때까지 걸리는 시간을 구하여라.


부분문제

번호 점수 조건
#19점

Ti=0

#227점

N<=10,000

#364점

주어진 제약조건 외에 아무런 제약조건이 없다.


예제

3

2 5
3 10
1 5
19

처음 상태는 다음과 같다.

1초 후 학생들이 한 칸씩 가므로 다음처럼 된다.

상황 시작 1+5=6초 후 학생 3이 자리에 앉고 서있는 학생들의 상태는 다음과 같다.

이후 3초동안, 나머지 학생들이 자리를 찾아 앞으로 가면, 다음 상태가 된다.

모두 제자리에 도착했으므로, 앉기만 하면 된다. 학생 1이 앉는데 5초, 학생 2가 앉는데 10초가 걸리므로, 총 10초 후에 모두가 앉게 된다.

총 걸린 시간은 1+5+3+10 = 19초이다.


출처

USACO 2014 February Gold, Problem #3
로그인해야 코드를 작성할 수 있어요.