보물
- 시간 제한
- 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 ≦ ) 가 공백으로 구분되어 주어진다. 이는 보물의 개수가 N 개이고, Anna 가 가져간 보물의 시장 가치의 합과 Bruno 가 가져간 보물의 시장 가치의 합의 차의 절댓값이 D 이하이면 Anna 가 만족함을 나타낸다.
이어지는 N 개의 줄 중 i 번째 줄 (1 ≦ i ≦ N) 에는 2 개의 정수 , (0 ≦ ≦ , 0 ≦ ≦ ) 가 공백으로 구분되어 주어진다. 이는 보물 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
코드를 제출하려면 로그인이 필요합니다.
로그인제출 내역이 없습니다.
아직 맞은 사람이 없습니다.
제출 내역이 없습니다.