Cod sursa(job #189628)

Utilizator thebest001Neagu Rares Florian thebest001 Data 16 mai 2008 13:05:29
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<stdio.h>
#define INF 2100000
int g,w,c,e,v[1000010],ws,ws1,ab,r=INF;
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	int i,j;
	scanf("%d%d",&g,&w);
	for(i=1; i<1000010; i++)
		v[i]=INF;
	for(i=0; i<g; i++)
	{
		scanf("%d%d",&e,&c);
		ws=ws1;
		for(j=ws; j>=0; j--)
		{
			if(v[j]!=INF)
			{
				if(v[j]+c<v[j+e])
					v[j+e]=v[j]+c;
				if(j+e>ws1)
					ws1=j+e;
				if(ws1>ab)
					ab=ws1;
				if(ws1>w)
					ws1=w;
			}
		}
	}
	if(ab>=w)
	{
		for(i=w; i<=ab; i++)
		{
			if(v[i]!=INF)
			{
				if(v[i]<r)
					r=v[i];
			}
		}
		printf("%d\n",r);
	}
	else
		printf("-1\n");
	return 0;
}