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

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

책장

면접 대비

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

요약
책을 주어진 순서대로 너비 합이 L 이하가 되도록 선반에 나누어 담고, 각 선반에서 가장 높은 책 높이의 합을 최소로 만든다.
난이도

보통10점 중 5점

유형
동적 계획법, 배열, 누적 합, 투 포인터
정답자
아직 제출이 없습니다

문제

농부 존은 소젖을 짜거나, 건초 더미를 쌓거나, 소를 줄 세우거나, 울타리를 만들지 않을 때면 좋은 책과 함께 앉아 있는 것을 즐긴다. 여러 해에 걸쳐 그는 책 NN권을 모았고(1≤N≤2 0001 \le N \le 2\,000), 이 책들을 모두 꽂을 새 책장을 만들려고 한다.

각 책 ii에는 너비 WiW_i와 높이 HiH_i가 있다. 책은 주어진 순서대로 여러 칸(선반)에 차례로 꽂아야 한다. 예를 들어 첫째 칸에는 책 1…k1 \dots k가, 둘째 칸에는 책 k+1k+1부터가 들어가는 식이다. 한 칸에 꽂힌 책들의 너비 합은 최대 LL까지만 허용된다(1≤L≤1091 \le L \le 10^9). 한 칸의 높이는 그 칸에 놓인 가장 높은 책의 높이와 같고, 모든 칸을 세로로 쌓아 올리므로 책장 전체의 높이는 각 칸 높이의 합이 된다.

책장 전체의 높이를 최소로 만들 때, 그 최소 높이를 구하라.

입력

  • 첫째 줄: 두 정수 NN과 LL이 공백으로 구분되어 주어진다.
  • 둘째 줄부터 N+1N+1째 줄까지: i+1i+1째 줄에는 책 ii의 높이 HiH_i와 너비 WiW_i가 공백으로 구분되어 주어진다(1≤Hi≤1061 \le H_i \le 10^6, 1≤Wi≤L1 \le W_i \le L).

출력

  • 첫째 줄에 책장 전체의 가능한 최소 높이를 출력한다.

힌트

입력 설명

책은 5권이고, 각 칸의 너비 합은 최대 1010이다.

출력 설명

칸은 3개이다. 첫째 칸에는 책 1(높이 5, 너비 7)만 놓이고, 둘째 칸에는 책 2…42 \dots 4(높이 13, 너비 합 9)가 놓이며, 셋째 칸에는 책 5(높이 3, 너비 8)가 놓인다.

예제3

  1. 예제 1

    입력
    5 10
    5 7
    9 2
    8 5
    13 2
    3 8
    
    예상 출력
    21
    
  2. 예제 2

    입력
    1 1000000000
    1000000 5
    
    예상 출력
    1000000
    
  3. 예제 3

    입력
    4 20
    7 5
    7 5
    7 5
    7 5
    
    예상 출력
    7