Cod sursa(job #391003)

Utilizator pykhNeagoe Alexandru pykh Data 4 februarie 2010 21:49:29
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
const int M=1005;
const int N=5005;
const int INF=2e8;
int g,w,e[M],c[M],v[N];

int main(){
	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]);
		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]!=INF) {
				if(j+e[i]>=w && v[j]+c[i]<v[w])
						v[w]=v[j]+c[i];
				if(j+e[i]<=w && v[j]+c[i]<v[j+e[i]])
						v[j+e[i]]=v[j]+c[i];
			}
		if(e[i]>=w && c[i]<v[w])
				v[w]=c[i];
		else if(c[i]<v[e[i]] && c[i]>v[w])
			v[e[i]]=c[i];
	}

	if(v[w]==INF)
		{
		printf("-1\n");
		return 0;
	}
	printf("%d\n",v[w]);
	return 0;
}