Cod sursa(job #2711641)

Utilizator Cosmin2004_InfoMoldoveanu Cosmin Cosmin2004_Info Data 24 februarie 2021 15:33:16
Problema Energii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <map>
#include <vector>

#define fi first
#define se second

using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
map <int, int> dp;

int main()
{
    int n, w, x, y;
    fin >> n >> w;
    dp[0] = 0;
    for(int i = 1; i <= n; i++) {
        fin >> x >> y;
        for(auto it = dp.rbegin(); it != dp.rend(); it++) {
            auto curr = *it;
            if(curr.fi < w)
                if(dp.find(curr.fi + y) != dp.end())
                    dp[curr.fi + y] = curr.se + x;
                else dp[curr.fi + y] = max(dp[curr.fi + y], curr.se + x);
        }
    }
    for(auto el : dp)
        if(el.se >= w) {
            fout << el.fi;
            break;
        }
    return 0;
}