Cod sursa(job #495164)

Utilizator stef2503Stefan Stan stef2503 Data 24 octombrie 2010 11:37:18
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>

struct energie {
	char e;
	int c;
};
energie v[30001];

int main ()
{
	freopen ("energii.in", "r", stdin);
	freopen ("energii.out", "w", stdout);
	int g, w, E, C, i, j, min = 32000;
	bool check = false;
	v[0].e = 1;
	for (i=1; i<=10001; i++)
		v[i].c = 32000;
	scanf("%d %d", &g, &w);
	for (i=1; i<=g; i++) {
		scanf ("%d %d", &E, &C);
		for (j=E; j>=0; j--) {
			if (v[j].e)
				if (j + E <= 30001) {
					v[j+E].e = 1;
					if (C+v[j].c < v[j+E].c) v[j+E].c = C+v[j].c;
				}
		}
		v[E].e=1;
		if (C < v[E].c) v[E].c=C;
	}
	for (i=w; i<=30001; i++) {
		if (v[i].e) {
			check = true;
			if (v[i].c<min) min = v[i].c;
		}
	}
	if (check) {
		printf("%d", min);
	} else printf("-1");
	/*for (i=0; i<=w; i++) {
		printf("%d %d %d\n", i, v[i].e, v[i].c);
	}*/
	return 0;
}