Cod sursa(job #1115934)

Utilizator alexclpAlexandru Clapa alexclp Data 22 februarie 2014 10:46:36
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <climits>

using namespace std;

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

const int G = 10002;
const int W = 15003;

int energieNecesara, numarGeneratoare;
int d[W];

void init()
{
    for (int i = 1; i <= energieNecesara + G; i++) {
        d[i] = INT_MAX;
    }
}

int sol()
{
    int rez = INT_MAX;

    for (int i = energieNecesara + G; i >= energieNecesara; i--) {
        if (d[i] < rez) {
            rez = d[i];
        }
    }
    return rez == INT_MAX ? -1 : rez;
}

int main()
{
    in >> numarGeneratoare >> energieNecesara;

    init();

    int energie, cost;

    for (int i = 1; i <= numarGeneratoare; i++) {
        in >> energie >> cost;

        for (int j = energieNecesara; j >= 0; j--) {
            if (d[j] != INT_MAX && d[j + energie] > d[j] + cost) {
                d[j + energie] = d[j] + cost;
            }
        }
    }

    out << sol() << "\n";

    return 0;
}