Cod sursa(job #1681650)

Utilizator vlad00Vlad Stoleru vlad00 Data 9 aprilie 2016 17:07:13
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#define NMAX 15001

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

int d[2 * NMAX], minim = NMAX;

int main() {
    int G, W;
    f >> G >> W;

    for (int i = 1; i < 2 * NMAX; ++i)
        d[i] = -1;

    d[0] = 0;

    for (int i = 0; i < G; ++i) {
            int eg, cg;
            f >> eg >> cg;

            for (int j = 2 * NMAX - eg; j >= 0; --j) {
                    if (d[j] != -1) {
                            if (d[j + eg] != -1)
                                d[j + eg] = min(d[j + eg], d[j] + cg);
                            else
                                d[j + eg] = d[j] + cg;
                        }
                }
        }

    for (int i = NMAX - 1; i >= W; --i)
        if (d[i] != -1)
            minim = min(minim, d[i]);

    if (minim == NMAX)
        g << -1;
    else
        g << minim;

    return 0;
}