Pagini recente » Cod sursa (job #1738166) | Cod sursa (job #1383630) | Cod sursa (job #1017718) | Cod sursa (job #1683570) | Cod sursa (job #2846963)
#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;
}