Cod sursa(job #3294430)

Utilizator oana_vlasaOana Vlasa oana_vlasa Data 23 aprilie 2025 11:00:04
Problema Problema rucsacului Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.08 kb
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
int N,G;
typedef struct
{
    int greutate;
    int profit;
}Rucsac;
int cmp(const void *x, const void *y)
{
    const Rucsac *p1 = (const Rucsac *)x;
    const Rucsac *p2 = (const Rucsac *)y;
    if (p1->profit < p2->profit) return 1;   // sortare descrescătoare
    if (p1->profit > p2->profit) return -1;
    return 0;
}
void greedy(Rucsac *v, FILE *fout)
{
   int s=0;
qsort(v,N,sizeof(Rucsac),cmp);
for(int i=0;i<N;i++)
{
    if(G>=v[i].greutate)
    {
        G-=v[i].greutate;
        s+=v[i].profit;
    }
}
fprintf(fout,"%d\n",s);

}
int main(void)
{
   Rucsac v[50001]={0};
   FILE *fin=fopen("rucsac.in","rt");
   if(fin==NULL)
   {
       perror("eroare la deschiderea fisierului");
       exit(-1);
   }
   FILE *fout=fopen("rucsac.out","wt");
   if(fout==NULL)
   {
       perror("eroare la inchiderea fisierului");
       exit(-1);
}
if(fscanf(fin,"%d %d",&N,&G)!=2)
{
    perror("datele nu se citesc corect");
    exit(-1);
}
for(int i=0;i<N;i++)
    fscanf(fin,"%d %d",&v[i].greutate,&v[i].profit);
greedy(v,fout);
    return 0;
}