Cod sursa(job #208970)

Utilizator stefysStefan stefys Data 19 septembrie 2008 19:41:28
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <cstdio>

using namespace std;
const unsigned int INF = 1<<31;

int main () {
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w+", stdout);
	
	unsigned int numGen, minW, cant[1001], cost[1001], Cmin[5001], rasp=INF;
	bool used[5001][1001];
	scanf("%u%u", &numGen, &minW);
	
	for (unsigned int i=0; i<numGen; ++i)
		scanf("%u%u", cant+i, cost+i);
	
	for (unsigned int i=0; i<=5000; ++i) {
		Cmin[i]=INF;
		for (unsigned int j=0; j<numGen; ++j)
			if (i-cant[j]>=0 && !used[i][i-cant[j]]) {
				unsigned int crt = Cmin[i-cant[j]]+cost[j];
				if (crt<Cmin[i]) Cmin[i] = crt;
			}
		if (i>=minW && Cmin[i]<rasp)
			rasp = Cmin[i];
	}
	printf("%u\n", rasp);
	return 0;
}