Cod sursa(job #2708091)

Utilizator EckchartZgarcea Robert-Andrei Eckchart Data 18 februarie 2021 12:05:13
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>
#include <cassert>
using namespace std;
using ll = long long;
using ull = unsigned long long;
using ld = long double;
using pi = pair<int, int>;
using pl = pair<ll, ll>;
using pd = pair<double, double>;
using pld = pair<ld, ld>;


int main()
{
    ifstream cin("energii.in");
    ofstream cout("energii.out");

    int G, W;
    cin >> G >> W;

    vector<int> dp(W + 1, 2e9);
    while (G--)
    {
        int EG, CG;
        cin >> EG >> CG;

        for (int i = W; i > EG; --i)
        {
            // cerr << "bef: " << dp[i] << '\n';
            dp[i] = min(dp[i], CG + dp[i - EG]);
            // cerr << "aft: " << dp[i] << '\n';
        }
        for (int i = 1; i <= min(W, EG); ++i)
        {
            dp[i] = min(dp[i], CG);
        }

    // #define dbg
    #ifdef dbg
        cerr << "dp: ";
        for (const int nr : dp)
        {
            cerr << nr << " ";
        }
        cerr << '\n';
    #endif
    }

    cout << (dp[W] == 2e9 ? -1 : dp[W]);
}