Cod sursa(job #751944)

Utilizator andreidanAndrei Dan andreidan Data 27 mai 2012 14:44:27
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
struct poturi{
	int suma,cost;
};
poturi pot[1000000];
struct valori{
	int en,co;
};
valori val[10000];
int main (){
	long long s;
	int g,i,j,w,min=1111111;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d %d", &g,&w);
	
	for(i=1;i<=g;++i)
		scanf("%d %d", &val[i].en,&val[i].co);
	s=w*2;
	pot[0].suma=1;
	for(j=1;j<=g;++j){
		for(i=s-val[j].en;i>=0;--i)
			if(pot[i].suma){
				if(pot[i+val[j].en].cost==0||val[j].co+pot[i].cost<pot[i+val[j].en].cost) pot[i+val[j].en].cost=val[j].co+pot[i].cost;
				pot[i+val[j].en].suma=1;
				
			}
	}
	for(i=w;i<=s;++i)
		if(pot[i].suma)
			if(pot[i].cost<min)min=pot[i].cost;
	printf("%d",min);
}