Cod sursa(job #418001)

Utilizator dushmiMihai-Alexandru Dusmanu dushmi Data 15 martie 2010 11:53:19
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include<cstdio>
int minim,e,W,EG[1<<10],CG[1<<10],f[1<<13];
int min(int x,int y)
{
    if(x<y) return x;
    return y;
}
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&e,&W);
    for(int i=1;i<=e;++i)
        scanf("%d%d",&EG[i],&CG[i]);
    f[0]=1;
    for(int i=1;i<=e;++i)
    {
        for(int j=W;j>=0;j--)
            if(f[j]!=0)
            {
                if(f[EG[i]+j]==0)
                    f[EG[i]+j]=f[j]+CG[i];
                else
                    f[EG[i]+j]=min(f[EG[i]+j],f[j]+CG[i]);
            }
    }
    minim=1<<30;
    for(int i=W;i<=W+(1<<10);i++)
        if(f[i]<minim && f[i]!=0)
            minim=f[i];
    if(mini==1<<30) printf("-1\n");
    else printf("%d\n",minim-1);
    return 0;
}