Cod sursa(job #2376784)

Utilizator XDBerryBerindean Razvan XDBerry Data 8 martie 2019 17:38:28
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda pregatire_cls10_oji Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

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

struct obiect{
    float greutate;
    float profit;
    float profitunitar;
};

bool verif(obiect i,obiect j)
{
    if(i.profitunitar!=j.profitunitar)
    return(i.profitunitar>j.profitunitar);
    return(i.greutate<j.greutate);

}

int main()
{
    int n , g , w=0,profit=0;
    obiect v[5001];
    in>>n;
    in>>g;
    for(int i=1;i<=n;i++)
    {
        in>>v[i].greutate;
        in>>v[i].profit;
        v[i].profitunitar=(float)(v[i].profit/v[i].greutate);
    }

    sort(v+1 , v+n+1,verif);

     for(int i=1;i<=n;i++)
     {
         cout<<v[i].greutate<<" ";
        cout<<v[i].profit<<" ";
        cout<<v[i].profitunitar<<endl;

     }

    for(int i=1;i<=n&&w!=g;i++)
    {
        if(w+v[i].greutate<=g)
        {
            w+=v[i].greutate;
            profit+=v[i].profit;
        }
    }
    out<<profit;
    return 0;
}