Cod sursa(job #2468106)

Utilizator valeriucaraselCarasel Valeriu valeriucarasel Data 5 octombrie 2019 12:54:49
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream in("energii.in");
    ofstream out("energii.out");
    int g,w;
    in>>g>>w;
    int e[g+5],c[g+5],total=0;
    for (int i=0;i<g;i++)
    {
        in>>e[i]>>c[i];
        total+=e[i];
    }
    int energie[total+5];
    energie[0]=0;
    for (int i=1;i<=total;i++)
    {
        energie[i]=-1;
    }
    for (int i=0;i<g;i++)
    {
        for (int j=total-e[i];j>=0;j--)
        {
            if (energie[j]!=-1)
            {
                if (energie[j+e[i]]!=-1)
                { if (c[i]+energie[j]<energie[j+e[i]])
                    {
                        if (energie[j+e[i]]<=w)
                        {
                            energie[j+e[i]]=c[i]+energie[j];
                        }
                        else
                            energie[w]=c[i]+energie[j];
                    }
                }
                else
                {
                    if (energie[j+e[i]]<=w)
                        {
                            energie[j+e[i]]=c[i]+energie[j];
                        }
                        else
                            energie[w]=c[i]+energie[j];
                }
            }
        }
    }
    out<<energie[w];
    in.close();
    out.close();
    return 0;
}