配点 : 300 点
問題文
N 個の品物があります。品物には 1,2,…,N と番号が振られています。各 i (1≦i≦N) について、品物 i の重さは wi で価値は vi です。
mts くんは N 個の品物のうちいくつかを選び、ナップサックに入れて持ち帰ることにしました。ただし、選んだ品物 {x1,…,xK} が下記の条件を満たす場合、かつその場合に限り、ナップサックに入れて持ち帰ることができます。ここで、K は選んだ品物の個数、xj (1≦j≦K) は選んだ品物の番号を表します。
- lcm(wx1,…,wxK)≤W
mts くんが持ち帰る品物の価値の総和の最大値を求めてください。より厳密には、lcm(wx1,…,wxK)≤W を満たす品物の選び方 {x1,…,xK} における ∑j=1Kvxj の最大値を求めてください。
ただし、lcm(a1,…,an) は n≥2 のとき {a1,…,an} の最小公倍数を、n=1 のとき a1 を、n=0 のとき(つまり品物を一つも選ばないとき)1 をそれぞれ表すものとします。
制約
- 1≤N≤100
- 1≤W≤104
- 1≤wi≤103
- 1≤vi≤109
- 入力は全て整数である
入力
入力は以下の形式で標準入力から与えられます。
出力
mts くんが持ち帰る品物の価値の総和の最大値を出力してください。
サンプル 1
品物の選び方として次の 8 通りがあります。
- 品物を一つも選ばない場合、条件を満たし、価値の総和は 0
- 品物 {1} を選ぶ場合、lcm(w1)=lcm(3)=3 であり、価値の総和は 10
- 品物 {2} を選ぶ場合、lcm(w2)=lcm(4)=4 であり、価値の総和は 20
- 品物 {3} を選ぶ場合、lcm(w3)=lcm(5)=5 であり、価値の総和は 30
- 品物 {1,2} を選ぶ場合、lcm(w1,w2)=lcm(3,4)=12 であり、価値の総和は 30
- 品物 {1,3} を選ぶ場合、lcm(w1,w3)=lcm(3,5)=15 であり、価値の総和は 40
- 品物 {2,3} を選ぶ場合、lcm(w2,w3)=lcm(4,5)=20 であり、価値の総和は 50
- 品物 {1,2,3} を選ぶ場合、lcm(w1,w2,w3)=lcm(3,4,5)=60 であり、価値の総和は 60
このうち、条件を満たす選び方において、価値の総和の最大値は 40 です。
サンプル 2
入力2
4 10
12 100
34 200
56 300
78 400
品物を一つも持ち帰ることができない場合があります。
サンプル 3
入力3
5 100
1 1000000000
2 1000000000
3 1000000000
4 1000000000
5 1000000000
答えは 32-bit 整数型に収まらない場合があります。