Cod sursa(job #300629)
Utilizator | Data | 7 aprilie 2009 16:09:04 | |
---|---|---|---|
Problema | Energii | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.66 kb |
#include<stdio.h>
#include <limits.h>
int main()
{long 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\n%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",v[g]);
return 0;
}