메뉴 건너뛰기

문제

11rh5 책장 0  

시간메모리제출 올바른 답 비율
1초64MB
5
1
20.0%


나의 횟수나의 최근 판정시도 성공 비율
11
100.0%
책장 

찬수는 1번에서 N번까지 번호가 매겨진 N권의 책을 가지고 있다. 찬수는 이 책을 꽂을 수 있는 책장을 설계하려고 한다. 찬수가 가지고 있는 i번 책의 두께는 t[i]이고, 높이는 h[i]이다. 단, 1<=i<=N이다. 이 책들을  번호 순서대로 책장에 꽂아야하고 번호의 순서를 임의로 바꾸어 꽂을 수 없다.

이 책들을 책장의 가장 아래 칸부터 위 칸의 순서로, 같은 칸에서는 왼쪽부터 오른쪽으로 책의 번호 순서로 꽂는다. 한번 위 칸으로 옮겨와서 책을 꽂으면 다시 아래 칸으로 내려가서 책을 꽂을 수 없다. 책장의 칸의 높이는 그 칸에 꽂는 책들 중 가장 높이가 높은 책에 의해 결정되며 책이 꽂혀있는 칸들의 높이의 합이 책장의 높이가 된다. 책장의 폭은 꽂혀있는 책의 두께의 합이 가장 큰 칸에 의해 결정된다. 단, 책장을 구성하는 나무의 두께는 고려하지 않는다. 

책을 모두 꽂은 후의 책장 전체의 높이를 H, 책장의 폭을 L이라고 할 때, 찬수는 H와 L중 최대값을 최소로 하는 책장을 설계하려고 한다.

이 책장의 H와 L중 최대값을 최소로 하는 책장을 구하는 프로그램을 작성하시오.

입력

입력의 첫 번째 줄에 책의 수를 나타내는 하나의 정수 N이 주어진다. 단, 1<=N<=100,000이다. 두 번째 줄부터 N개의 줄에, 책들의 번호 순서대로 한 줄에 한권씩, 각 책에 대한 두께 t[i]와 높이 h[i]를 나타내는 두 정수가 하나의 빈칸을 사이에 두고 주어진다. 단, 1<=t[i],h[i]<=10,000이다.

출력

첫째 줄에 책을 모두 꽂은 후의 책장 전체의 높이와  책장의 폭 중에서 최대값을 최소로 하는 값을 하나의 정수로 출력한다.

예시
1입력
7
8 6
2 3
6 5
4 5
5 7
1 2
5 4
출력
16
위로