Submission #900192

#TimeUsernameProblemLanguageResultExecution timeMemory
900192jkwnKnapsack (NOI18_knapsack)Java
73 / 100
1035 ms31340 KiB
import java.io.*;
import java.util.StringTokenizer;

public class knapsack {
    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer tokenizer = new StringTokenizer(in.readLine());

        int s = Integer.parseInt(tokenizer.nextToken());
        int n = Integer.parseInt(tokenizer.nextToken());
        item[] items = new item[n+1];
        int[] dp = new int[s+1];
        dp[0] = 1;

        for (int i = 1; i < n+1; i++) {
            tokenizer = new StringTokenizer(in.readLine());
            items[i] = new item(Integer.parseInt(tokenizer.nextToken()),Integer.parseInt(tokenizer.nextToken()),Integer.parseInt(tokenizer.nextToken()));
        }

        for (int i = 0; i < n; i++) {
            int v = items[i+1].v;
            int w = items[i+1].w;
            int k = items[i+1].k;
            for (int j = s; j >= 0; j--) {
                if (dp[j] >= 1) {
                    for (int count = 0; count <= k; count++) {
                        if (j + w * count <= s) {
                            dp[j+w*count] = Math.max(dp[j+w*count], dp[j] + v*count);
                        }
                        else {
                            break;
                        }
                    }
                }
            }
        }
        int ans = 0;
        for (int i = 0; i < s+1; i++) {
            ans = Math.max(ans, dp[i]);
        }
        System.out.println(ans-1);
    }
    static class item {
        int v, w, k;
        item(int v, int w, int k) {
            this.v = v;
            this.w = w;
            this.k = k;
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...