Pagini recente » Cod sursa (job #626518) | Cod sursa (job #2614966) | Cod sursa (job #1921792) | Cod sursa (job #869984) | Cod sursa (job #1706964)
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.util.Scanner;
public class Main {
public static final int NMAX = 5010;
public static final int GMAX = 10010;
private static int d[][] = new int[2][GMAX];
public static int highestEarnings(int devs, Offer[] offers) {
int l = 0;
for (int i = 0; i < offers.length; ++i, l = 1 - l)
for (int dev = 0; dev <= devs; ++dev) {
d[1 - l][dev] = d[l][dev];
if (offers[i].getDevelopers() <= dev)
d[1 - l][dev] = Math.max(d[1 - l][dev],
d[l][dev - offers[i].getDevelopers()] + offers[i].getEarnings());
}
return d[l][devs];
}
static class Offer {
int developers;
int earnings;
public int getDevelopers() {
return developers;
}
public void setDevelopers(int developers) {
this.developers = developers;
}
public int getEarnings() {
return earnings;
}
public void setEarnings(int earnings) {
this.earnings = earnings;
}
}
public static void main(String[] args) throws FileNotFoundException {
Scanner scanner = new Scanner(new FileInputStream("rucsac.in"));
int n = scanner.nextInt();
int g = scanner.nextInt();
Offer devs[] = new Offer[n];
for (int i = 0; i < n; i++) {
Offer offer = new Offer();
offer.setDevelopers(scanner.nextInt());
offer.setEarnings(scanner.nextInt());
devs[i] = offer;
}
PrintWriter stream = new PrintWriter("rucsac.out");
stream.printf("%d ", highestEarnings(g, devs));
stream.close();
}
}