Mai intai trebuie sa te autentifici.
Cod sursa(job #175657)
Utilizator | Data | 10 aprilie 2008 11:37:31 | |
---|---|---|---|
Problema | Energii | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.81 kb |
#include<stdio.h>
long g,w,i,nr,max = 2000000000,v[15001],cg[1001],eg[1001];
int main()
{
freopen("energii.in","rt",stdin);
freopen("energii.out","wt",stdout);
scanf("%ld%ld",&g,&w);
for(i=1;i<=g;i++)
scanf("%ld%ld",&eg[i],&cg[i]);
for(i=1;i<=w+10001;i++)
v[i] = 2000000000;
for( nr = 1; nr <= g; nr++)
for( i = w; i >= 0 ; i--)
if(v[i]<2000000000)
{
if(i+eg[nr]>=w && v[i]+cg[nr] <max) max=v[i]+cg[nr];
else
if(v[i+eg[nr]]>v[i]+cg[nr])
v[i+eg[nr]] = v[i]+cg[nr];
}
if(max<2000000000) printf("%ld",max);
else printf("-1\n");
return 0;
}