atcoder#ARC073B. [ABC060D] Simple Knapsack

[ABC060D] Simple Knapsack

配点 : 400400

問題文

あなたは NN 個の物と、強度 WW のバッグを持っています。 ii 個目の物は、重さが wiw_i で価値が viv_i です。

あなたは、物のうちいくつかを選び、バッグに入れます。 ただし、選んだ物の重さの和は WW 以下でなくてはいけません。

あなたは、バッグに入れた物の価値の総和を最大化したいです。

制約

  • 1N1001 \leq N \leq 100
  • 1W1091 \leq W \leq 10^9
  • 1wi1091 \leq w_i \leq 10^9
  • すべての i=2,3,...,Ni = 2,3,...,N について、w1wiw1+3w_1 \leq w_i \leq w_1 + 3
  • 1vi1071 \leq v_i \leq 10^7
  • W,wi,viW, w_i, v_i はすべて整数である

入力

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

NN WW

w1w_1 v1v_1

w2w_2 v2v_2

:

wNw_N vNv_N

出力

価値の総和の最大値を出力する。

4 6
2 1
3 4
4 10
3 4
11

1,31, 3 個目の物を選ぶと良いです。

4 6
2 1
3 7
4 10
3 6
13

2,42, 4 個目の物を選ぶと良いです。

4 10
1 100
1 100
1 100
1 100
400

すべての物が選べます。

4 1
10 100
10 100
10 100
10 100
0

11 個も物が選べません。