Cod sursa(job #479176)

Utilizator Magnuscont cu nume gresit sau fals Magnus Data 23 august 2010 10:50:15
Problema Energii Scor 15
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <stdio.h>

int d[15001],e[1001],c[1001],s,g,w,i,j,min=1000000;

int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    scanf("%d%d",&g,&w);
    for (i=1;i<=g;i++)
    {
        scanf("%d%d",&e[i],&c[i]);
        s+=e[i];
    }
    if (s<w) {printf("-1");return 0;}
    for (i=1;i<=g;i++)
    {
        for (j=w;j>0;j--)
            if ((d[j]>0)&&((d[j+e[i]]>d[j]+c[i])||(d[j+e[i]]==0))) d[j+e[i]]=d[j]+c[i];
        if ((d[e[i]]==0)||(d[e[i]]>c[i])) d[e[i]]=c[i];
    }
    for (i=w;i<=s;i++) if ((d[i]!=0)&&(d[i]<min)) min=d[i];
    printf("%d",min);
    return 0;
}