Cod sursa(job #873986)

Utilizator bratiefanutBratie Fanut bratiefanut Data 7 februarie 2013 20:05:01
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

int G,W,e[5001],c[5001],cost[5001],minim=9999999;

int main()
{
    int i,j,k;
    f>>G>>W;
    for(k=1;k<=G;k++)
    f>>e[k]>>c[k];

    for(j=1;j<=W;++j)
    cost[j]=-1;
    cost[0]=0;

    for(i=1;i<=G;++i)
        for(j=W;j>=0;--j)
            if (cost[j]!=-1)
            {
                if(j+e[i]>W)
                    if(minim>cost[j]+c[i])
                        minim=cost[j]+c[i];
                if (j+e[i]<=W)
                    if(cost[j+e[i]]>cost[j]+c[i]||cost[j+e[i]]==-1)
                        cost[j+e[i]]=cost[j]+c[i];
            }
    if(c[W]==-1 || minim==9999999)
    g<<-1;
    else
    g<<minim;
    return 0;
}