Cod sursa(job #300638)
| Utilizator | Data | 7 aprilie 2009 16:13:52 | |
|---|---|---|---|
| Problema | Energii | Scor | 30 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<stdio.h>
#include <limits.h>
int main()
{ int n,g,i,e,c,v[16000];
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
for(i=1;i<=16000;i++) v[i]=1000000000;
v[0]=0;
scanf("%ld%ld",&n,&g);
for(;n;n--)
{
scanf("%ld%ld",&e,&c);
for(i=g-1;i>=0;i--)
if ((i+e<=g) && (v[i+e]>v[i]+c))
v[i+e]=v[i]+c;
else
if(v[g]>v[i]+c) v[g]=v[i]+c;
}
if(v[g]==1000000000) v[g]=-1;
printf("%ld\n",v[g]);
return 0;
} 