Cod sursa(job #2718571)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 8 martie 2021 20:16:27
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,gMax;
FILE *fin,*fout;
struct obiecte
{
    int greutate;
    float val;
    float raport;
} v[1001];

int cmp(obiecte a,obiecte b)
{
    if(a.raport>b.raport)
    {
        return 1;
    }

    return 0;
}

void afisare()
{
    for(int i=1; i<=n; i++)
    {
        fprintf(fout,"%d %d\n",v[i].greutate,v[i].val);

    }
    fprintf(fout,"\n");
}
int main()
{
    fin=fopen("rucsac.in","r");
    fout=fopen("rucsac.out","w");

    fscanf(fin,"%d %d",&n,&gMax);
    for(int i=1; i<=n; i++)
    {
        fscanf(fin,"%d %f",&v[i].greutate,&v[i].val);
        v[i].raport=v[i].val/v[i].greutate;
    }
    //fclose(fin);
    stable_sort(v+1,v+n+1,cmp);
    // afisare();
    float total=0; // valoarea totala
    int greutate=0;
    int i=1;

    while(v[i].greutate<=gMax)
    {
        //greutate+=v[i].greutate;
        gMax-=v[i].greutate;
        // printf("gMax=%d\n",gMax);
        total+=v[i].val;
        i++;
    }
    fprintf(fout,"%.f",total);

    return 0;
}