Cod sursa(job #34005)
Utilizator | Data | 19 martie 2007 23:15:27 | |
---|---|---|---|
Problema | Energii | Scor | 5 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<stdio.h>
long x[5002],i,j,n,m,k,l,a,z,s[5002],y[5002];
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%ld%ld",&n,&m);
for (i=1;i<=n;i++)
scanf("%ld%ld",&x[i],&y[i]);
s[0]=1;
for (i=1;i<=n;i++)
for (j=m;j>=0;j--)
if (s[j]) if ((s[j+x[i]]&&s[j+x[i]]>s[j]+y[i])||(s[j+x[i]]==0)) {s[j+x[i]]=s[j]+y[i];}
z=2000000000;
for (i=m;i<=5001;i++)
if (s[m]<z&&s[m]!=0) {z=s[m];}
if (z==2000000000) z=0;
printf("%ld\n",z-1);
return 0;
}