Cod sursa(job #2050083)

Utilizator skeniaTirla Ovidiu skenia Data 27 octombrie 2017 22:22:21
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>

#define IN 2000000000
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");


int cost[5001], energie[5001];

int dyn[10005];
int nrg, needed, etotal;

int main() {
    fin >> nrg >> needed;
    for (int iter = 1; iter <= nrg; iter++) {
        fin >> energie[iter] >> cost[iter];
        etotal += energie[iter];
    }
    if (etotal < needed) {
        fout << -1;
        return 0;
    }
    for (int iter = 1; iter <= 10001; iter++)
        dyn[iter] = IN;
    for (int iter = 1; iter <= needed; iter++) {
        for (int i = needed; i >= energie[iter]; i--) {
            dyn[i] = min(dyn[i - energie[iter]] + cost[iter], dyn[i]);
        }
        for (int i = energie[iter]; i >= 1; i--) {
            dyn[i] = min(dyn[i], cost[iter]);
        }
    }
    fout << dyn[needed];

    return 0;
}