Cod sursa(job #3030440)

Utilizator t_avramAvram Tudor t_avram Data 17 martie 2023 17:50:43
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
#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;
}