Cod sursa(job #199216)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 17 iulie 2008 15:28:27
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#define M 1005
#define N 5005
#define INF 200000000
int g,w,e[M],c[M],v[N],min=INF;
void citeste(){
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&g,&w);
	for(int i=1;i<=g;i++)
		scanf("%d%d",&e[i],&c[i]);
}
void rezolva(){
	
	int i,j;
	for(j=1;j<=w;++j)
		v[j]=INF;
	for(i=1;i<=g;i++){
		for(j=w;j>=1;j--)
			if(v[j]) {
				if(j+e[i]>=w)
					if(v[j]+c[i]<v[w])
						v[w]=v[j]+c[i];
					else
						;
				else
					if(v[j]+c[i]<v[j+e[i]])
						v[j+e[i]]=v[j]+c[i];
			}
		if(e[i]>=w)
			if(c[i]<v[w])
				v[w]=c[i];
			else;
		else if(c[i]<v[e[i]])
			v[e[i]]=c[i];
	}
	/*
	for(i=1;i<=w;i++)
		printf("%d ",v[i]);
	*/
	if(v[w]==INF) 
		v[w]=-1;
	printf("%d\n",v[w]);
}
int main(){
	citeste();
	rezolva();
	return 0;
}