Mai intai trebuie sa te autentifici.
Cod sursa(job #2556727)
Utilizator | Data | 25 februarie 2020 10:12:03 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 25 |
Compilator | java | Status | done |
Runda | Arhiva educationala | Marime | 1.1 kb |
import java.io.File;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(final String[] args) throws IOException {
final Scanner reader = new Scanner(new File("rucsac.in"));
final BufferedWriter writer = new BufferedWriter(new FileWriter("rucsac.out"));
final int N = reader.nextInt();
final int G = reader.nextInt();
final int[] profit = new int[1 + N];
final int[] weight = new int[1 + N];
for (int it = 1; it <= N; ++it) {
weight[it] = reader.nextInt();
profit[it] = reader.nextInt();
}
final int[][] dp = new int[1 + N][1 + G];
for (int i = 1; i <= N; ++i) {
for (int w = 1; w <= G; ++w) {
if (w < weight[i]) dp[i][w] = dp[i - 1][w];
else dp[i][w] = Math.max(profit[i] + dp[i - 1][w - weight[i]], dp[i - 1][w]);
}
}
writer.write(dp[N][G] + "\n");
writer.flush();
reader.close();
writer.close();
}
}