Cod sursa(job #3168139)

Utilizator victor_gabrielVictor Tene victor_gabriel Data 11 noiembrie 2023 16:43:32
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <climits>

using namespace std;

const int DIM = 1010;
const int MAX_W = 5010;

struct Generator {
    int e, c;
};

Generator generators[DIM];
int dp[MAX_W];

int main() {
    ifstream fin("energii.in");
    ofstream fout("energii.out");

    int g, w;
    fin >> g >> w;
    for (int i = 1; i <= g; i++)
        fin >> generators[i].e >> generators[i].c;

    for (int i = 1; i <= w; i++)
        dp[i] = INT_MAX;

    for (int i = 1; i <= g; i++) {
        for (int j = w - 1; j >= 0; j--) {
            if (dp[j] != INT_MAX) {
                int ind = j + generators[i].e;
                if (ind > w)
                    ind = w;

                dp[ind] = min(dp[ind], dp[j] + generators[i].c);
            }
        }
    }

    fout << (dp[w] == INT_MAX ? -1 : dp[w]);

    fin.close();
    fout.close();
    return 0;
}