Cod sursa(job #429558)

Utilizator crunch13sadas asdas crunch13 Data 30 martie 2010 11:41:30
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
int g,w,i,j,k,smax,aux,min=99999999,s[10000001],su;
struct gen{
	int en,cost;
};
gen v[10001];
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&g,&w);
	for(i=1;i<=g;i++){
		scanf("%d%d",&v[i].en,&v[i].cost);
		if(v[i].en>smax){
			smax=v[i].en;
		}
		su+=v[i].en;
	}
	for(i=1;i<=su;i++){
		s[i]=99999999;
	}
	for(i=1;i<=g;i++){
		for(j=su;j>=0;j--){
			
			if(v[i].cost+s[j]<s[j+v[i].en])
			{
				s[j+v[i].en]=v[i].cost+s[j];
			}
		}
	}
	for(i=1;i<=su;i++){
		if(i>=w&&s[i]<min){
			min=s[i];
		}
	}
	if(min==99999999){
		printf("-1");
	}else{
	printf("%d\n",min);
	}
	return 0;
}