Cod sursa(job #2718561)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 8 martie 2021 20:05:28
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
#include <algorithm>
#define NMAX 5000
using namespace std;

int n,gMax;

struct obiect{
    int greu;
    int cost;
    double raport;
}v[NMAX+3];

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

int cmp(obiect a,obiect b)
{
    if(a.raport>b.raport)
    {
        return 1;
    }
    else if(a.raport==b.raport && a.greu>b.greu)
    {
        return 1;
    }
    return 0;
}

int main()
{
    fin>>n>>gMax;
    for(int i=1; i<=n; i++)
    {
        fin>>v[i].greu>>v[i].cost;
        v[i].raport=(double)v[i].cost/(double)v[i].greu;
        //fout<<v[i].raport<<" ";
    }
    stable_sort(v+1,v+n+1,cmp);
    int cMax=0,g=0;
    for(int i=1; i<=n; i++)
    {
        if(g+v[i].greu<=gMax)
        {
            g+=v[i].greu;
            cMax+=v[i].cost;
        }
        //fout<<v[i].greu<<" "<<v[i].cost<<" "<<v[i].raport<<"\n";
    }
    fout<<cMax;
    return 0;
}