Pagini recente » Cod sursa (job #2287440) | Cod sursa (job #2017435) | Cod sursa (job #1884025) | Cod sursa (job #2197584) | Cod sursa (job #3030440)
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
struct cell
{
double g, val, f;
}v[5001], x;
bool compare(cell x, cell y)
{
return x.f > y.f;
}
int n, gmax, nr;
double s, greutate, g_fract;
int main()
{
cin >> n >> gmax;
for (int i = 1; i <= n; i++)
{
cin >> v[i].g >> v[i].val;
v[i].f = v[i].val / v[i].g;
}
sort (v + 1, v + n + 1, compare);
for (int i = 1; i <= n; i++)
{
x = v[i];
if (greutate + x.g <= gmax)
{
greutate += x.g;
s += x.val;
}
else
{
nr = gmax - greutate;
g_fract = x.g / nr;
s += (x.val / g_fract);
break;
}
}
cout << floor(s);
return 0;
}