Cod sursa(job #3295143)

Utilizator DavidFirizaFiriza David Valentin DavidFiriza Data 2 mai 2025 17:20:00
Problema Problema rucsacului Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <stdio.h> 
#include <stdlib.h>
typedef struct prd
{
    double w,p;
}Produs;

int comp(const void *a, const void *b)
{
    Produs *prod1 = (Produs *)a;
    Produs *prod2 = (Produs *)b;
    double rap1 = prod1->p / prod1->w;
    double rap2 = prod2->p / prod2->w;
    return rap2 - rap1;
}
int main(void)
{
    int N;
    double G;
    Produs v[5000];

    double Pmax = 0;
    scanf("%d %lf", &N, &G);
    for(int i = 0 ; i < N ; i++)
    {
        scanf("%lf %lf", &v[i].w, &v[i].p);
    }
    qsort(v, N, sizeof(Produs), comp);
    for(int i = 0 ; i <  N ; i++)
    {
        printf("%lf, %lf", v[i].w, v[i].p);
        printf("\n");
    }
    int k = 0;
    
    do
    {
        G = G - v[k].w;
        Pmax = Pmax + v[k].p;
        k++;
    }while(G > 0 && k < N);
    printf("%lf", Pmax);
    return 0;
}