Cod sursa(job #751887)

Utilizator ephgstefana gal ephg Data 27 mai 2012 12:38:34
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
struct gen{
	int e, c;
};
int min (int a,int b){
	if(a<b)return a;
	return b;
}
gen a[1005];
int w, n,ok[5005],sp[5005];
int main () {
	int i,s=0,j;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d %d",&n,&w);
	for(i=1;i<=n;++i){
		scanf("%d %d",&a[i].e,&a[i].c);
		s+=a[i].e;
	}
	if(s<w){
		printf("-1");
		return 0;
	}
	ok[0]=1;
	for(i=1;i<=n;++i){ //generatoarele
		for(j=w;j>=0;--j)if(ok[j]&&j+a[i].e<=w){  //energia cumualata
			ok[j+a[i].e]=1;
			if(sp[j+a[i].e]!=0)sp[j+a[i].e]=min(sp[a[i].e+j],sp[j]+sp[a[i].e]);
			else sp[j+a[i].e]=sp[j]+a[i].c;
		}
	}
	printf("%d",sp[w]);
	return 0;
}