Cod sursa(job #220565)

Utilizator andyciupCiupan Andrei andyciup Data 11 noiembrie 2008 17:07:22
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<stdio.h>
int cost[10005], e[10005], v[10005]={1};
int g, w;
int baga(){
	cost[0]=0;
	for(int i=1; i<=g; ++i)
	{
		for(int j=w-1; j ;--j)
			if(v[j])
			{
				if(j+e[i]<w && (v[j]+cost[i]<v[j+e[i]] || v[j+e[i]]==0))
					v[j+e[i]]=v[j]+cost[i];
				if(j+e[i]>=w && (v[j]+cost[i]<v[w] || v[w]))
					v[w]=v[j]+cost[i];
			}
		if(cost[i]<v[e[i]]||v[e[i]]==0)
			v[e[i]]=cost[i];
	}
	if(v[w]==0)
		return -1;
	return v[w];
}

int main(){
	freopen("energii.in", "r", stdin);
	freopen("energii.out", "w", stdout);
	
	scanf("%d", &g);
	scanf("%d", &w);
	for(int i=1; i<=g; ++i){
		scanf("%d", &e[i]);
		scanf("%d", &cost[i]);
	}
	printf("%d\n",baga());
	return 0;
}