Cod sursa(job #2113443)

Utilizator osiaccrCristian Osiac osiaccr Data 24 ianuarie 2018 16:22:41
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#define DEF 10010
#define INF 1 << 29

using namespace std;

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

int E[DEF], C[DEF], D[DEF][DEF], n, w;

long long c_tot;

int main () {
    fin >> n >> w;
    for (int i = 1; i <= n; ++ i) {
        fin >> E[i] >> C[i];
        c_tot += C[i];
    }

    for (int i = 1; i <= w; ++ i) {
        D[0][i] = INF;
    }

    for (int i = 1; i <= n; ++ i) {
        for (int j = 1; j <= w; ++ j) {
            D[i][j] = INF;
            if (E[i] <= j)
                D[i][j] = min (D[i - 1][j], D[i - 1][j - E[i]] + C[i]);
            else {
                D[i][j] = min (D[i - 1][j], C[i]);
            }
        }
    }

    if (D[n][w] == INF) {
        fout << -1;
        return 0;
    }

    fout << D[n][w];

    return 0;
}