Cod sursa(job #2846963)

Utilizator Mihai7218Bratu Mihai-Alexandru Mihai7218 Data 9 februarie 2022 21:34:42
Problema Energii Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <map>
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int n, i, j, w, vsize, eg[1001], cg[1001];
map <int, int> d;
int main()
{
    fin >> n >> w;
    for (i = 1; i <= n; i++)
    {
        fin >> eg[i] >> cg[i];
    }
    map <int, int>::iterator it;
        d.insert ({0, 0});
    for (i = 1; i <= n; i++)
    {
        for (it = d.end(), it--; it != d.begin(); it--)
        {
            if (d.find((*it).first+eg[i]) == d.end())
                d.insert ({(*it).first+eg[i], (*it).second+cg[i]});
            else d[(*it).first+eg[i]] = min (d[(*it).first+eg[i]], (*it).second+cg[i]);
        }
        if (d.find((*it).first+eg[i]) == d.end())
            d.insert ({(*it).first+eg[i], (*it).second+cg[i]});
        else d[(*it).first+eg[i]] = min (d[(*it).first+eg[i]], (*it).second+cg[i]);
    }
    int mx = 1e9;
    for (it = d.lower_bound(w); it != d.end(); it++)
        mx = min(mx, (*it).second);
    if (mx == 1e9) fout << -1;
    else fout << mx;
    return 0;
}