Description
Bessie has gone to the mall's jewelry store and spies a charm bracelet. of course, she 'd like to fill it with the best charms possible from the N (1 ≤ N ≤3,402) available charms. each charm I in the supplied list has a weight Wi (1 ≤ Wi ≤ 400), a 'inclurability 'factor Di (1 ≤ Di ≤ 100 ), and can be used at most once. bessie can only support a charm bracelet whose weight is no more than M (1 ≤m ≤ 12,880 ).
Given that weight limit as a constraint and a list of the charms with their weights and desirability rating, deduce the maximum possible sum of ratings.
Input
* Line 1: Two space-separated integers: N and M
* Lines 2. N + 1: Line I + 1 describes charm I with two space-separated integers: Wi and Di
Output
* Line 1: A single integer that is the greatest sum of charm desirabilities that can be achieved given the weight constraints
Sample Input
4 6
1 4
2 6
3 12
2 7 Sample Output
01 backpack problems # include <stdio. h> int c [3500], w [3500], f [13000]; int main () {int I, j, k, n, v, m; while (scanf ("% d", & n, & m )! = EOF) {for (I = 0; I <= m; I ++) f [I] = 0; for (I = 0; I <n; I ++) scanf ("% d", c + I, w + I); for (I = 0; I <n; ++ I) {for (v = m; v> = c [I]; -- v) // c [I] can be optimized to bound, bound = max {V-sum c [I ,... n], c [I]} {f [v] = (f [v]> f [v-c [I] + w [I]? F [v]: f [v-c [I] + w [I]) ;}} printf ("% d \ n", f [m]);} 01 backpack problems # include <stdio. h> int c [3500], w [3500], f [13000]; int main () {int I, j, k, n, v, m; while (scanf ("% d", & n, & m )! = EOF) {for (I = 0; I <= m; I ++) f [I] = 0; for (I = 0; I <n; I ++) scanf ("% d", c + I, w + I); for (I = 0; I <n; ++ I) {for (v = m; v> = c [I]; -- v) // c [I] can be optimized to bound, bound = max {V-sum c [I ,... n], c [I]} {f [v] = (f [v]> f [v-c [I] + w [I]? F [v]: f [v-c [I] + w [I]) ;}} printf ("% d \ n", f [m]);}