Cod sursa(job #1324098)

Utilizator oprea1si2si3Oprea Sebastian oprea1si2si3 Data 21 ianuarie 2015 20:20:20
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
using namespace std;

const int kInf = 1000000001, kMaxG = 10005, kMaxE = 15005;

int eg[kMaxG], cg[kMaxG], v[kMaxE], g, w, sol = kInf;

void Citire(){
    ifstream in("energii.in");
    int i;
    in >> g >> w;
    for (i = 1; i <= g; ++i)
        in >> eg[i] >> cg[i];
    in.close();
}

void Initializare() {
    int i;
    for (i = 1; i < kMaxE ; ++i)
        v[i] = kInf;
}

void Dinamica() {
    int i, j;
    for (i = 1; i <= g; ++i)
        for (j = w; j >= 0; --j)
                v[j + eg[i]] = min(v[j] + cg[i], v[j + eg[i]]);
}

void ObtSol() {
    int i;
    for (i = w; i < kMaxE; i++)
            sol = min (sol, v[i]);
}

void Solve() {
    Initializare();
    Dinamica();
    ObtSol();
}

void Afisare() {
    ofstream out("energii.out");
    if (sol == kInf)
        out << "-1" << '\n';
    else
        out << sol << '\n';
    out.close();
}

int main() {
    Citire();
    Solve();
    Afisare();
    return 0;
}