Pagini recente » Cod sursa (job #244640) | Cod sursa (job #1433566) | Cod sursa (job #750859) | Cod sursa (job #461471) | Cod sursa (job #1977944)
// 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;
}