Cod sursa(job #2371413)

Utilizator musalaulMusu Miprian musalaul Data 6 martie 2019 17:31:27
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");

const int INF = 1 << 30;

int G, W, E[5005], C[5005], Cst[10005];

int main()
{
    fin >> G >> W;

    for(int i = 1; i <= G; ++i)
        fin >> E[i] >> C[i];

    for(int i = 1; i <= 10000; ++i)
        Cst[i] = 1 << 30;

    Cst[0] = 0;

    for(int i = 1; i <= G; ++i)
    {
        for(int j = W - E[i]; j >= 0; --j)
            Cst[j + E[i]] = min(Cst[j + E[i]], C[i] + Cst[j]);
        for(int j = 1; j <= E[i]; ++j)
            Cst[j] = min(Cst[j], C[i]);
    }

    fout << (Cst[W] == INF ? -1 : Cst[W]);

    return 0;
}