Cod sursa(job #2892731)

Utilizator mihnea.tTudor Mihnea mihnea.t Data 23 aprilie 2022 13:41:33
Problema Energii Scor 85
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

#define INF ((int)1e9)

using namespace std;

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

struct obj_info {
    int energy;
    int cost;
};

int n, w;
vector<obj_info> v;

int main(void) {
    fin >> n >> w;
    
    v.push_back({0, 0});
    for (int i = 1; i <= n; ++i) {
        int e, c;
        fin >> e >> c;
        v.push_back({e, c});
    }

    vector<vector<int>> dp(n + 1, vector<int>(w + 1, INF));
    for (int i = 0; i <= n; ++i) {
        dp[i][0] = 0;
    }

    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= w; ++j) {
            int prev_cost;
            if (j - v[i].energy < 0) {
                prev_cost = v[i].cost;
            } else {
                prev_cost = dp[i - 1][j - v[i].energy] + v[i].cost;
            }

            dp[i][j] = min(dp[i - 1][j], prev_cost);
            if (dp[i][j] == INF) {
                break;
            }
        }
    }

    fout << (dp[n][w] == INF ? -1 : dp[n][w]) << "\n";

    return 0;
}