Pagini recente » Cod sursa (job #671198) | Cod sursa (job #10939) | Cod sursa (job #1003968) | Cod sursa (job #1437574) | Cod sursa (job #2640840)
#include <iostream>
#include <vector>
#include <algorithm>
#include <tuple>
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
vector <tuple <int, int, int>> v; // worth, quantity, price
int G, W, best_cost = 100000000;
int main()
{
f >> G >> W;
for(int i = 1; i <= G; ++i)
{
int q, p;
f >> q >> p;
v.push_back(make_tuple(-(q - p), -q, p));
}
sort(v.begin(), v.end());
int actual_value = 0, actual_cost = 0, last = 0;
for(int i = 0; i < G; ++i)
{
int c, x, y;
tie(c, x, y) = v[i];
x = -x;
actual_value += x;
actual_cost += y;
if(actual_value >= W)
{
if(actual_value == W)
{
if(best_cost > actual_cost)
best_cost = actual_cost;
}
else
{
tie(c, x, y) = v[last];
x = -x;
last++;
actual_value -= x;
actual_cost -= y;
}
}
}
g << best_cost;
return 0;
}