1- import java .util .*;
21import java .io .*;
2+ import java .util .*;
33
44public class Main {
55 public static void main (String [] args ) throws IOException {
6+
67 BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
7- String [] inputs = br .readLine ().split (" " );
88
9- int N = Integer .parseInt (inputs [0 ]);
10- int K = Integer .parseInt (inputs [1 ]);
9+ StringTokenizer st = new StringTokenizer (br .readLine ());
1110
12- int [][] item = new int [ N + 1 ][ 2 ] ;
11+ int N = Integer . parseInt ( st . nextToken ()) ;
1312
14- for (int i = 1 ; i <= N ; i ++) {
15- inputs = br .readLine ().split (" " );
16- item [i ][0 ] = Integer .parseInt (inputs [0 ]);
17- item [i ][1 ] = Integer .parseInt (inputs [1 ]);
13+ int K = Integer .parseInt (st .nextToken ());
14+
15+ int W [] = new int [N +1 ];
16+ int V [] = new int [N +1 ];
17+ for (int i =1 ; i <=N ; i ++) {
18+ st =new StringTokenizer (br .readLine ());
19+ W [i ] = Integer .parseInt (st .nextToken ());
20+ V [i ] = Integer .parseInt (st .nextToken ());
1821 }
1922
20- int [][] dp = new int [N + 1 ][K + 1 ];
23+ int dp [][] = new int [N + 1 ][K + 1 ];
2124
22- for (int k = 1 ; k <= K ; k ++) {
23- for (int i = 1 ; i <= N ; i ++) {
24- dp [i ][k ] = dp [i - 1 ][k ];
25- if (k - item [i ][0 ] >= 0 ) {
26- dp [i ][k ] = Math .max (dp [i - 1 ][k ], item [i ][1 ] + dp [i - 1 ][k - item [i ][0 ]]);
25+ for (int i =1 ; i <=N ; i ++) {
26+ for (int j = 1 ; j <=K ; j ++) {
27+ if (W [i ] <=j ) {
28+ dp [i ][j ] = Math .max (dp [i -1 ][j ], V [i ] + dp [i -1 ][j -W [i ]]);
29+ }
30+ else {
31+ dp [i ][j ] = dp [i -1 ][j ];
2732 }
2833 }
2934 }
30-
31-
3235 System .out .println (dp [N ][K ]);
3336 }
34- }
37+
38+
39+ }
0 commit comments