Cod sursa(job #1605082)

Utilizator enacheionutEnache Ionut enacheionut Data 18 februarie 2016 19:22:10
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <algorithm>

using namespace std;

int main()
{
    int nrGeneratoare, energiePornire, energie, cost;
    ifstream in("energii.in");
    ofstream out("energii.out");

    in >> nrGeneratoare >> energiePornire;
    int costDP[energiePornire + 1];
    fill(costDP, costDP + energiePornire + 1, 10001 );

    for( int i = 0; i < nrGeneratoare; ++i )
    {
        in >> energie >> cost;
        for( int j = energiePornire; j >= 0; --j )
        {
            if( j <= energie )
            {
                costDP[j] = min(costDP[j], cost);
            }
            else
            {
                costDP[j] = min(costDP[j], costDP[j - energie] + cost);
            }
        }
    }
    costDP[energiePornire] == 10001 ? out << -1 : out << costDP[energiePornire];

    in.close();
    out.close();
    return 0;
}