Cod sursa(job #38263)
| Utilizator | Data | 25 martie 2007 16:52:39 | |
|---|---|---|---|
| Problema | Energii | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include<stdio.h>
int n,w,wmax,e,i,j,g,a[100001],s;
char viz[100001];
int main()
{freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
scanf("%lld %lld",&n,&w);
viz[0]=1;
for(i=1;i<=n;i++)
{scanf("%lld %lld",&e,&g);
for(j=w-1;j>=0;j--)
if(viz[j]&&(a[j+e]==0||a[j+e]>a[j]+g))
{a[j+e]=a[j]+g;
if(j+e>wmax&&wmax<20001) wmax=j+e;}}
if(wmax<w) s=-1;
else
s=a[wmax];
for(i=w;i<wmax;i++)
if(viz[i]&&a[i]<s) s=a[i];
printf("%lld",s);
fclose(stdout);
return 0;}
