Cod sursa(job #4417)

Utilizator vlad_DVlad Dumitriu vlad_D Data 3 ianuarie 2007 05:31:52
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <cstdio>

using namespace std;
int n, w, i;
int sol[5001];
int main() {
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);
	scanf("%d %d", &n, &w);
    for (i=0; i<=w; i++) sol[i] = 999999;
	sol[0] = 0;
	for (int k=1; k<=n; k++) {
		int e, c;
		scanf("%d %d", &e, &c);	
		int X = sol[w];
		for (i=w-c+1; i<=w; i++) if (sol[i] + c < X ) X = sol[i] + c;
		for (i = w-c; i>=0; i--) 
			if (sol[i+c] < sol[i] + c) sol[i+c] = sol[i] + c;
		if (X < sol[w]) sol[w] = X;
	}
	if (sol[w] == 999999) sol[w] = -1;
	printf("%d\n", sol[w]);
	return 0;
}