Cod sursa(job #240777)

Utilizator andreea_mandreea martinovici andreea_m Data 8 ianuarie 2009 18:05:54
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>
const int oo=1000000000;
int g,w,e[1001],c[1001],v[5001];

void init()
{
	for(int i=1;i<=w;++i)
		v[i]=oo;
}

int main()
{
	int i,j;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d%d",&g,&w);
	for(i=1;i<=g;i++)
		scanf("%d%d",&e[i],&c[i]);
	init();
	for(i=1;i<=g;i++)
	{
		for(j=w;j>0;j--)
			if(v[j]!=oo)
			{
				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];
		if(e[i]<w && c[i]<v[e[i]])
			v[e[i]]=c[i];
	}
	printf("%d\n",v[w]!=oo ? v[w] : -1);
	return 0;
}