Cod sursa(job #2223652)

Utilizator cyg_CiuntuSorinCiuntu Sorin Andrei cyg_CiuntuSorin Data 20 iulie 2018 21:40:23
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

using namespace std;
int i,j,g,w,l,d[10000000],ok,c[1005],e[1005];
int main()
{
    freopen("energii.in","r",stdin);
    freopen("energii.out","w",stdout);
    ok=d[0]=l=0;
    scanf("%d%d",&g,&w);
    for(i=1;i<=g;i++)
    {
        scanf("%d%d",&e[i],&c[i]);
        ok+=e[i];
    }
    if(ok<w)
    {
        printf("-1");
        return 0;
    }
    for(i=1;i<=ok;i++)
        d[i]=-1;
    for(i=1;i<=g;i++)
        for(j=l;j>=0;j--)
            if(d[j]!=-1 && (d[j]+c[i]<d[j+e[i]] || d[j+e[i]]==-1))
            {
                d[j+e[i]]=d[j]+c[i];
                if(j+e[i]>l)
                    l=j+e[i];
            }
    i=w;
    while(d[i]==-1)
        i++;
    printf("%d",d[i]);
    return 0;
    //Pentru d - indicele = energia produsa ; valoarea = cost
}