Cod sursa(job #3133967)

Utilizator MaleticiMiroslavMaletici Miroslav MaleticiMiroslav Data 27 mai 2023 19:17:24
Problema Problema rucsacului Scor 0
Compilator c-64 Status done
Runda Arhiva educationala Marime 1.63 kb
#include "allhead.h"
FILE *fin = NULL;
FILE *fout = NULL;
typedef struct
{
    int g;
    int p;
    float pg;
} rucsac;
FILE *openfile(char *filename, char *type)
{
    FILE *fin = NULL;
    if ((fin = fopen(filename, type)) == NULL)
    {
        printf("fisierul nu a putut sa fie deschis");
        exit(EXIT_FAILURE);
    }
    return fin;
}
void BubbleSort(rucsac *v, int n)
{
    int s, i;
    rucsac aux;
    do
    {
        s = 0;
        for (i = 1; i < n; i++)
        {

            if (v[i - 1].pg < v[i].pg)
            {

                aux = v[i - 1];
                v[i - 1] = v[i];
                v[i] = aux;
                s = 1;
            }
        }
    } while (s);
}
void citire(rucsac *v, int N)
{
    for (int i = 0; i < N; i++)
    {
        fscanf(fin, "%d %d", &v[i].g, &v[i].p);
        v[i].pg = (float)v[i].p / v[i].g;
    }
}
void afisare(rucsac *v, int N)
{
    fprintf(fout, "\n");
    for (int i = 0; i < N; i++)
    {
        fprintf(fout, "%d %d %.02f\n", v[i].g, v[i].p, v[i].pg);
    }
    fprintf(fout, "\n");
}
int main()
{
    int N, G;

    fin = openfile("data_in.txt", "r");
    fout = openfile("data_out.txt", "w");
    fscanf(fin, "%d %d", &N, &G);
    rucsac v[15];
    citire(v, N);
    // afisare(v, N);
    BubbleSort(v, N);
    // afisare(v, N);
    int k = 0;
    int p = 0;
    while (G != 0 && k < N)
    {
        if (G - v[k].g >= 0)
        {
            G = G - v[k].g;
            p += v[k].p;
        }
        k++;
    }
    // fprintf(fout, "Profit max: %d,Greutate Ramasa:%d", p, G);
    fprintf(fout, "%d", p);
}