Cod sursa(job #377377)
| Utilizator | Data | 24 decembrie 2009 12:22:23 | |
|---|---|---|---|
| Problema | Energii | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.47 kb |
#include <stdio.h>
long v[10000001],g,w,i,j,e,c;
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%ld%ld",&g,&w);
for (i=1;i<g+1;i++)
{
scanf("%ld%ld",&e,&c);
for (j=w;j>0;j--)
{
if ((v[j]!=0)&&((v[e+j]==0)||(v[e+j]>v[j]+c)))
if (e+j<=w) v[e+j]=v[j]+c;
else if ((v[w]>v[j]+c)||(v[w]==0)) v[w]=v[j]+c;
}
if ((c<v[e])||(v[e]==0)) v[e]=c;
}
if (v[w]==0) v[w]=-1;
printf("%ld",v[w]);
return 0;
}