Cod sursa(job #1977944)

Utilizator zingHorneac Emanuel Stefan zing Data 6 mai 2017 15:20:42
Problema Problema rucsacului Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.49 kb
// An implementation of Prim's algorithm.}
#include <stdio.h>
#include <limits.h>

FILE *fin;
FILE *fout;
int n;
float cap;
float *raport;
float *greutate;
float sackweight1,sackvalue1;
void Read()
{
    int i;
    float w,val;
    fscanf(fin,"%d %f\n",&n,&cap);
    raport = (float*)malloc(n*sizeof(float));
    greutate = (float*)malloc(n*sizeof(float));
    for(i = 0; i < n;i++)
    {
        fscanf(fin,"%f %f\n",&w,&val);
        raport[i] = val/w;
        greutate[i] = w;
    }
}

void sort()
{
    int k,i;
    while(k != 0)
    {
        k = 0;
        for(i = 0 ; i < n-1;i++)
        {
           if(raport[i] < raport[i+1])
           {
               k = 1;
               int aux = raport[i];
               raport[i] = raport[i+1];
               raport[i+1] = aux;
               aux = greutate[i];
               greutate[i] = greutate[i+1];
               greutate[i+1] = aux;
           }
        }
    }
}


void putInBagWhole()
{
    int i;
    for(i = 0 ; i< n; i++)
    {
        if(greutate[i] + sackweight1  <= cap)
        {
            sackvalue1 += raport[i]*greutate[i];
            sackweight1 +=greutate[i];
        }
    }
}
int main(int argc, char *argv[])
{
    fin = fopen(argv[1],"r");
    fout = fopen(argv[2],"w");
    if(fin == NULL || fout == NULL)
    {
        printf("cannot open file\n");
    }
    Read();
    sort();
    putInBagWhole();
    fprintf(fout,"%f %f\n",sackweight1,sackvalue1);

    return 0;
}