Cod sursa(job #1706963)

Utilizator UTCN_FrunzaUTCN Lazar Nitu Petruta UTCN_Frunza Data 23 mai 2016 22:01:44
Problema Problema rucsacului Scor 0
Compilator java Status done
Runda Arhiva educationala Marime 1.55 kb
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 int 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.write(highestEarnings(g, devs));
		stream.close();
		return 0;
	}
}