Pagini recente » Cod sursa (job #2667123) | Cod sursa (job #2872600) | Cod sursa (job #678813) | Cod sursa (job #1385562) | Cod sursa (job #2215035)
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();
}
}