D - ナップサック問題 Editorial /

Time Limit: 2 sec / Memory Limit: 512 MB

問題文

0/1ナップサック問題を解いてください。0/1ナップサック問題とは以下のような問題のことです。

  • N 個の荷物があり、i (1≦i≦N) 番目の荷物には価値 v_i と重さ w_i が割り当てられている。
  • 許容重量 W のナップサックが1つある。
  • 重さの和が W 以下となるように荷物の集合を選びナップサックに詰め込むとき、価値の和の最大値を求めよ。ただし、同じ荷物は一度しか選ぶことができない。

入力

入力は以下の形式で標準入力から与えられる。

N W
v_1 w_1
v_2 w_2
:
v_N w_N
  • 1 行目には、荷物の数を表す整数 N (1≦N≦200) とナップサックの許容重量を表す整数 W(1≦W≦10^9) が空白区切りで与えられる。
  • 2 行目からの N 行には、各荷物の情報が与えられる。そのうち i(1≦i≦N) 行目には、i 番目の荷物の価値を表す整数 v_i (1≦v_i≦10^9) と重さを表す整数 w_i (1≦w_i≦10^9) が空白区切りで与えられる。
  • N≦30」、「全てのi(1≦i≦N) について 1≦w_i≦1000」、「全てのi(1≦i≦N) について 1≦v_i≦1000」という 3 つの条件のうち少なくとも1つの条件が成り立つ。

部分点

この問題には部分点が設定されている。満点は 100 点である。

  • N≦30 を満たすデータセット 1 に正解した場合は、34 点が与えられる。
  • N≦200 かつ全ての i(1≦i≦N) について 1≦w_i≦1000 を満たすデータセット 2 に正解した場合は、上記の点数とは別に 33 点が与えられる。
  • N≦200 かつ全ての i(1≦i≦N) について 1≦v_i≦1000 を満たすデータセット 3 に正解した場合は、上記の点数とは別に 33 点が与えられる。

出力

出力は以下の形式で標準出力に行うこと。

1 行目に、達成できる最大の合計価値を出力せよ。末尾の改行を忘れないこと。


入力例1

3 10
15 9
10 6
6 4

出力例1

16

2 番目と 3 番目のアイテムを選ぶと、合計の重みが 10 で価値が 16 となり、最大価値を達成できます。 この入出力例は、データセット 1,2,3 の制約を満たしているため、全てのデータセットの採点に用いられます。


入力例2

30 499887702
128990795 137274936
575374246 989051853
471048785 85168425
640066776 856699603
819841327 611065509
704171581 22345022
536108301 678298936
119980848 616908153
117241527 28801762
325850062 478675378
623319578 706900574
998395208 738510039
475707585 135746508
863910036 599020879
340559411 738084616
122579234 545330137
696368935 86797589
665665204 592749599
958833732 401229830
371084424 523386474
463433600 5310725
210508742 907821957
685281136 565237085
619500108 730556272
88215377 310581512
558193168 136966252
475268130 132739489
303022740 12425915
122379996 137199296
304092766 23505143

出力例2

3673016420

この入出力例は、データセット 1 の制約のみ満たしているため、データセット 2,3 の採点には用いられません。


入力例3

10 2921
981421680 325
515936168 845
17309336 371
788067075 112
104855562 96
494541604 960
32007355 161
772339969 581
55112800 248
98577050 22

出力例3

3657162058

この入出力例は、データセット 3 の制約を満たしていないため、データセット 3 の採点には用いられません。


入力例4

10 936447862
854 810169801
691 957981784
294 687140254
333 932608409
832 42367415
642 727293784
139 870916042
101 685539955
853 243593312
369 977358410

出力例4

1686

この入出力例は、データセット 2 の制約を満たしていないため、データセット 2 の採点には用いられません。