Cod sursa(job #2556727)

Utilizator AplayLazar Laurentiu Aplay 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();
    }

}