Cod sursa(job #2215035)

Utilizator costelus1catalin costica costelus1 Data 20 iunie 2018 20:26:11
Problema Problema rucsacului Scor 65
Compilator java Status done
Runda Arhiva educationala Marime 1.16 kb
import java.io.*;
import java.util.Scanner;

public class Main
{
    public static int knapsack(int[] W, int[] P, int B)
    {
        int n = W.length - 1;
        int k = 0;
        int[][] Opt = new int[2][B + 1];
        for (int i = 1; i <= n; i++)
        {
            for (int w = 1; w <= B; w++)
            {
                Opt[k][w] = Opt[1 - k][w];
                if (w >= W[i])
                    Opt[k][w] = Math.max(Opt[1 - k][w],
                                         P[i] + Opt[1 - k][w - W[i]]);
            }
            k = 1 - k;
        }
        return Opt[1 - k][B];
    }

    public static void main(String[] args) throws IOException
    {
        Scanner sc = new Scanner(new FileReader("rucsac.in"));
        PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter
                ("rucsac.out")));
        int n = sc.nextInt();
        int B = sc.nextInt();
        int[] W = new int[n + 1]; // weights
        int[] P = new int[n + 1]; // profits
        for (int i = 1; i <= n; i++)
        {
            W[i] = sc.nextInt();
            P[i] = sc.nextInt();
        }
        pw.println(knapsack(W, P, B));
        pw.close();
    }
}