Cod sursa(job #2050014)

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

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

int length, necessary, dynamicCost[5002];

int main() {
    fin >> length >> necessary;
    for (int iter = 0; iter < length; ++iter) {
        int energy, cost;
        fin >> energy >> cost;
        if (dynamicCost[energy] == 0)
            dynamicCost[energy] = cost;
        else {
            if (dynamicCost[2 * energy] == 0)
                dynamicCost[2 * energy] = dynamicCost[energy] + cost;
            else {
                dynamicCost[2 * energy] = min(dynamicCost[energy] + cost, dynamicCost[2 * energy]);
            }
        }
        dynamicCost[energy] = min(dynamicCost[energy], cost);
        if (iter + 1 - energy > 0 and dynamicCost[iter + 1 - energy] > 0)
            dynamicCost[energy] = min(dynamicCost[energy], dynamicCost[iter + 1 - energy] + cost);
    }
    for (int i = 0; i <= necessary; ++i) {
        cout << i << ' ' << dynamicCost[i] << '\n';
    }
    if (dynamicCost[necessary] == 0)
        fout << "-1";
    else
        fout << dynamicCost[necessary] << '\n';
    return 0;
}