Cod sursa(job #3284700)

Utilizator _andr31Rusanescu Andrei-Marian _andr31 Data 12 martie 2025 09:01:24
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
#define INF 50000000
int main()
{
    ifstream fin("energii.in");
    ofstream fout("energii.out");

    int n, w;
    fin >> n >> w;
    vector<pair<int, int>> objects(n);
    vector<int> dp(w + 1, INF);
    for (int i = 0; i < n; ++i) {
        // first = energia, second = costul
        fin >> objects[i].first >> objects[i].second;
    }
    dp[0] = 0;
    for (int i = 1; i <= n; ++i) {
        for (int j = w-1; j >= 0; --j) {
            if (dp[j] != INF) {
                int k = j + objects[i-1].first;
                if (k > w)
                    k = w;
                if (dp[k] > dp[j] + objects[i-1].second)
                    dp[k] = dp[j] + objects[i-1].second;
            }
        }
    }
    fout << (dp[w] == INF ? -1 : dp[w]);
    return 0;
}