#1497
Unrated

보물

원문: 日本語
시간 제한
2s
메모리 제한
256MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

도둑인 Anna 와 Bruno 는 대부호의 저택에 몰래 들어가서, 보물 1 부터 보물 N 까지 N 개의 보물을 발견했다. 이 보물들을 Anna 와 Bruno 가 나누어 가지게 되었다. 보물 중 몇 개를 Anna 가 가져가고, 남은 보물 중 몇 개를 Bruno 가 가져간다. 같은 보물을 두 사람이 가져갈 수는 없다. Anna 나 Bruno 는 보물을 하나도 가져가지 않아도 된다. 또한 남은 보물은 저택에 그대로 두므로, 두 사람 모두 가져가지 않는 보물이 있어도 된다.

각 보물에는 "시장 가치" 와 "귀중도" 라는 2 개의 값이 정해져 있다. Anna 가 가져간 보물의 시장 가치의 합과 Bruno 가 가져간 보물의 시장 가치의 합의 차의 절댓값이 D 이하이면, Anna 는 공평하다고 생각하여 만족한다. 한편 Bruno 는 Anna 보다 귀중도가 큰 보물을 갖고 싶어 한다.

Anna 가 만족하도록 보물을 나누었을 때, Bruno 가 가져간 보물의 귀중도의 합에서 Anna 가 가져간 보물의 귀중도의 합을 뺀 값의 최댓값을 구하는 프로그램을 작성하시오.

입력

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

첫째 줄에는 2 개의 정수 N, D (1 ≦ N ≦ 30, 0 ≦ D ≦ 101510^{15}) 가 공백으로 구분되어 주어진다. 이는 보물의 개수가 N 개이고, Anna 가 가져간 보물의 시장 가치의 합과 Bruno 가 가져간 보물의 시장 가치의 합의 차의 절댓값이 D 이하이면 Anna 가 만족함을 나타낸다.

이어지는 N 개의 줄 중 i 번째 줄 (1 ≦ i ≦ N) 에는 2 개의 정수 XiX_{i}, YiY_{i} (0 ≦ XiX_{i}101510^{15}, 0 ≦ YiY_{i}101510^{15}) 가 공백으로 구분되어 주어진다. 이는 보물 i 의 시장 가치가 XiX_{i} 이고, 귀중도가 YiY_{i} 임을 나타낸다.

주어지는 5 개의 입력 데이터 중 입력 1 에서는 N ≦ 10 을 만족한다. 또한 입력 2 에서는 D = 0 을 만족한다.

출력

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

예제 입력 1

6 15
50 900
30 200
40 100
80 600
60 100
70 700

예제 출력 1

1200

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

예제 입력 2

5 0
0 1000000000000000
0 1000000000000000
1 1
1000000000000000 0
1000000000000000 0

예제 출력 2

2000000000000000
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출

제출 내역이 없습니다.

맞은 사람

아직 맞은 사람이 없습니다.

난이도 투표
Unrated0명 투표
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출

제출 내역이 없습니다.