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

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

보물 분배

시간 제한10초메모리 제한1024 MB

요약
각 보물을 안나, 브루노, 미선택 중 하나로 나누어 시장가 합계 차이가 D 이하가 되도록 하고 브루노의 희소가치 우위를 최대로 합니다.
난이도

보통10점 중 7점

유형
분할 정복, 완전 탐색, 정렬
정답자
아직 제출이 없습니다

문제

도둑 Anna와 Bruno가 대부호의 저택에 숨어들어 보물 1번부터 보물 NN번까지 NN개를 찾아냈다. 두 사람은 이 보물을 나누어 가지기로 했다. 먼저 Anna가 보물 중 몇 개를 가져가고, 남은 보물 중 몇 개를 Bruno가 가져간다. 같은 보물을 두 사람이 함께 가질 수는 없다. Anna와 Bruno는 보물을 하나도 가져가지 않아도 된다. 가져가지 않은 보물은 저택에 그대로 두므로, 두 사람 모두 손대지 않는 보물이 있어도 된다.

보물마다 시장 가치와 귀중도라는 두 값이 정해져 있다. Anna가 가져간 보물의 시장 가치 합과 Bruno가 가져간 보물의 시장 가치 합의 차이의 절댓값이 DD 이하이면, Anna는 공평하다고 여기고 만족한다. 한편 Bruno는 Anna보다 귀중도가 큰 보물을 원한다.

Anna가 만족하도록 보물을 나누었을 때, Bruno가 가져간 보물의 귀중도 합에서 Anna가 가져간 보물의 귀중도 합을 뺀 값의 최댓값을 구하여라.

입력

입력은 1+N1 + N개의 줄로 이루어진다.

첫째 줄에는 두 정수 NN과 DD가 공백을 사이에 두고 주어진다 (1≤N≤301 \le N \le 30, 0≤D≤10150 \le D \le 10^{15}). 보물의 개수가 NN개이고, Anna가 가져간 보물의 시장 가치 합과 Bruno가 가져간 보물의 시장 가치 합의 차이의 절댓값이 DD 이하이면 Anna가 만족한다는 뜻이다.

이어지는 NN개의 줄 중 ii번째 줄 (1≤i≤N1 \le i \le N)에는 두 정수 XiX_i와 YiY_i가 공백을 사이에 두고 주어진다 (0≤Xi≤10150 \le X_i \le 10^{15}, 0≤Yi≤10150 \le Y_i \le 10^{15}). 보물 ii의 시장 가치가 XiX_i이고 귀중도가 YiY_i라는 뜻이다.

출력

Anna가 만족하도록 보물을 나누었을 때, Bruno가 가져간 보물의 귀중도 합에서 Anna가 가져간 보물의 귀중도 합을 뺀 값의 최댓값을 한 줄에 출력한다.

힌트

첫 번째 예제에서 Anna가 보물 2, 보물 3, 보물 5를 가져가고 Bruno가 보물 1과 보물 6을 가져가면, 시장 가치 합은 Anna가 130, Bruno가 120이다. 차이의 절댓값 10이 D=15D = 15 이하이므로 Anna는 만족한다. 이때 귀중도 합은 Anna가 400, Bruno가 1600이므로, Bruno가 가져간 보물의 귀중도 합에서 Anna가 가져간 보물의 귀중도 합을 뺀 값은 1200이다. 이 값이 최댓값이다.

예제4

  1. 예제 1

    입력
    6 15
    50 900
    30 200
    40 100
    80 600
    60 100
    70 700
    
    예상 출력
    1200
    
  2. 예제 2

    입력
    5 0
    0 1000000000000000
    0 1000000000000000
    1 1
    1000000000000000 0
    1000000000000000 0
    
    예상 출력
    2000000000000000
    
  3. 예제 3

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

    입력
    4 2
    10 1
    11 2
    12 3
    13 4
    
    예상 출력
    2