Cod sursa(job #220574)

Utilizator andyciupCiupan Andrei andyciup Data 11 noiembrie 2008 17:23:02
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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)
		if(e[i]>=w)
			if(cost[i]<v[w] || v[w]==0)
				v[w]=cost[i];
			else;
		else
		{
			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]==0))
						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;
}