Cod sursa(job #403978)

Utilizator nandoLicker Nandor nando Data 25 februarie 2010 17:04:50
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <cstdio>

const int none=5000000;
int g,w,e[1001],c[1001],v[5001];

int main(){
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d %d",&g,&w);
	for(int i=1;i<=w;i++){
		v[i]=none;
	}
	for(int i=0;i<g;i++){
		scanf("%d %d",&e[i],&c[i]);
	}
	for(int i=0;i<g;i++){
		for(int j=w;j>0;j--){
	        if(v[j]!=none){
				if(j+e[i]>=w){
					if(v[j]+c[i]<v[w]){
						v[w]=v[j]+c[i];
					}
				}
			}else if(v[j+e[i]]>v[j]+c[i]){
				v[j+e[i]]=v[j]+c[i];
			}
		}
		if(e[i]>=w){
			if(c[i]<v[w]){
				v[w]=c[i];
			}else if(v[e[i]]>c[i]){
	          v[e[i]]=c[i];
			}
		}
	}
	printf("%d",(v[w]==none)?-1:v[w]);
	fclose(stdin);
	fclose(stdout);
	return 0;
}