Pagini recente » Cod sursa (job #680096) | Cod sursa (job #979783) | Cod sursa (job #1721786) | Cod sursa (job #1107242) | Cod sursa (job #1810451)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream f{ "energii.in" };
ofstream q{ "energii.out" };
bool sCmp(pair<int, int>left, pair<int, int> right)
{
return left.second < right.second;
}
int main()
{
int g, w;
vector<int> v(5005, -1);
vector<pair<int, int>> k;
int e, c;
f >> g >> w;
for (int i = 0; i < g; ++i)
{
f >> e >> c;
k.push_back(make_pair(e, c));
}
sort(k.begin(), k.end(), sCmp);
for(pair<int,int> p : k)
{
e = p.first;
c = p.second;
if (e >= w)
{
if (c < v[w] || v[w] == -1) v[w] = c;
continue;
}
for (int i = w - 1; i > 0; i--)
{
if (v[i] != -1)
{
if (i + e >= w && (v[w] > v[i] + c || v[w] == -1)) v[w] = v[i] + c;
else if (i + e < w && (v[i + e] > v[i] + c || v[i+e] == -1)) v[i + e] = v[i] + c;
}
}
if (v[e] == -1) v[e] = c;
}
q << v[w];
f.close();
q.close();
return 0;
}