Cod sursa(job #583440)

Utilizator ELHoriaHoria Cretescu ELHoria Data 20 aprilie 2011 11:16:23
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include<cstdio>

long s, x[1000000]; 

int main(){
	freopen("energii.in","r",stdin);
	freopen("energii.out","w",stdout);
	long v[1002], w[1002], s, i, j, p, nr, w1;
	scanf("%ld%ld",&nr,&w1);
	s=0;
	for (i=0;i<nr;i++)
		scanf("%ld%ld",&v[i],&w[i]) , s+=v[i];
	
	if (s<w1) printf("-1\n");
	else 
	{
	x[0]=1;
	for (i=0;i<nr;i++)
		for (j=w1;j>=0;j--)
			if (x[j] && ((w[i]+x[j]<x[j+v[i]])||(x[j+v[i]]==0)))
				x[j+v[i]]=w[i]+x[j];
	p=x[w1];
	for (i=w1+1;i<=s;i++)
		if ( x[i]<p && x[i] ) p=x[i];
	printf("%ld\n",p-1);
	}
	return 0;
}