File tree Expand file tree Collapse file tree 1 file changed +62
-0
lines changed
Expand file tree Collapse file tree 1 file changed +62
-0
lines changed Original file line number Diff line number Diff line change 1+ ```
2+ import java.io.*;
3+ import java.util.*;
4+
5+ public class Main {
6+ private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+ private static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+ private static int[] dp, w, v;
9+ private static int N, m;
10+ private static double M;
11+ public static void main(String[] args) throws IOException {
12+
13+ while (true) {
14+ init();
15+ if (N == 0 && M == 0.0) break;
16+
17+ DP();
18+ int answer = 0;
19+ for (int i = 0; i <= m; i++) {
20+ answer = Math.max(answer, dp[i]);
21+ }
22+
23+ bw.write(answer + "\n");
24+ }
25+
26+ bw.write("\n");
27+ bw.flush();
28+ bw.close();
29+ br.close();
30+ }
31+
32+ private static void init() throws IOException {
33+ StringTokenizer st = new StringTokenizer(br.readLine());
34+ N = Integer.parseInt(st.nextToken());
35+ M = Double.parseDouble(st.nextToken()) * 100;
36+
37+ if (N == 0 && M == 0.0) return;
38+ m = (int) (M+0.5);
39+
40+ w = new int[N];
41+ v = new int[N];
42+
43+ for (int i = 0; i < N; i++) {
44+ st = new StringTokenizer(br.readLine());
45+ v[i] = Integer.parseInt(st.nextToken());
46+ w[i] = (int) (Double.parseDouble(st.nextToken()) * 100 + 0.5);
47+ }
48+
49+ dp = new int[m+1];
50+ }
51+
52+ private static void DP() {
53+ for (int i = 0; i < N; i++) {
54+ for (int j = 0; j <= m; j++) {
55+ if (j - w[i] >= 0) {
56+ dp[j] = Math.max(dp[j], dp[j - w[i]] + v[i]);
57+ }
58+ }
59+ }
60+ }
61+ }
62+ ```
You can’t perform that action at this time.
0 commit comments