Cod sursa(job #2907997)

Utilizator simion_bogdanSimion Bogdan-Dumitru simion_bogdan Data 1 iunie 2022 00:19:52
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<algorithm>
#include<vector>
#include<fstream>

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

struct rucsac {
    double valoare;
    double greutate;
}s[5001]; 
int n, Gmax;
int g=0;
double val=0;
bool sortare(rucsac a, rucsac b)
{
    return(a.unitate > b.unitate);
}
int ok = 1;
void solve()
{
    for (int i = 1; i <= n && ok; i++)
    {
        if ((double)(Gmax - g) >= s[i].greutate)
        {
            val += s[i].valoare;
            g += s[i].greutate;
        }
        else
        {
            al += (s[i].unitate * (Gmax - g));
            ok = 0;
        }
    }
    fout << val;
}

int main()
{
    fin >> n >> Gmax;
    for (int i = 1; i <= n; i++)
    {
        fin >> s[i].greutate >> s[i].valoare;
        s[i].unitate = s[i].valoare / s[i].greutate;
    }

    sort(s + 1, s + n + 1, sortare);
    solve();
}