Cod sursa(job #824474)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 26 noiembrie 2012 17:39:16
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
#include<algorithm>
#define maxim 2000000000
using namespace std;
int n,i,j,k,wmax,w[10005],e[10005],rez,x,y;
int main()
{
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d %d",&n,&wmax);
	memset(e,maxim,sizeof(e));
	for (i=1;i<=wmax;i++) e[i]=maxim;
	rez=maxim;w[0]=1;e[0]=0;
	for (i=1;i<=n;i++)
	{
		scanf("%d %d",&x,&y);
		for (j=wmax-x;j>=0;j--) if (w[j]==1) 
			{
				w[j+x]=1;
				e[j+x]=min(e[j+x],e[j]+y);
				if (j+x>=wmax) rez=min(rez,e[j+x]);
		}
	}
	if (rez!=maxim) printf("%d\n",rez);else printf("-1\n");
	return 0;
}