Cod sursa(job #675736)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 8 februarie 2012 00:34:48
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<cstdio>
long long a[500001];
int main()
{
	int n,i,j,k,max=0,rez,x,y;
	long long min=99999999;
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	scanf("%d/n",&n);
	scanf("%d/n",&k);
	for (i=0;i<=k*6;i++) a[i]=99999999;
	scanf("%d %d/n",&x,&y);
	a[x]=y;
	for (i=1;i<=n;i++) 
	{
		scanf("%d %d/n",&x,&y);
		for (j=k;j>=0;j--) 
		{	
			if ((a[j]>0)&&(a[j]+y<a[j+x])) {
				a[j+x]=a[j]+y;
				if (max<j+x) max=j+x;
				if ((min>a[j+x])&&(j+x>=k)) min=a[j+x];
			}
		}
		if (y<a[x]) a[x]=y;
		if ((min>a[x])&&(x>=k)) min=a[x];
	}
	if (min!=99999999) printf("%lld\n",min);else printf("-1\n");
	return 0;
}