Pagini recente » Cod sursa (job #2018449) | Cod sursa (job #2176474) | Cod sursa (job #1628569) | Cod sursa (job #2022662) | Cod sursa (job #3134771)
#include<stdio.h>
#include<stdlib.h>
int N,G,W[5000],P[5000];
typedef struct{
int loc;
float val;
}eficenta;
eficenta v[5000];
void ordonare()
{
int i,j;
eficenta aux;
for(i=1;i<=N;i++)
for(j=i+1;j<=N;j++)
{
if(v[i].val>v[j].val)
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
}
}
void citire()
{
int i;
FILE *fis;
fis=fopen("rucsac.in","rt");
if(fis==NULL)
{
printf("eroare a fisierului");
exit(EXIT_FAILURE);
}
fscanf(fis,"%d",&N);
fscanf(fis,"%d",&G);
for(i=1;i<=N;i++)
{
fscanf(fis,"%d",&W[i]);
fscanf(fis,"%d",&P[i]);
v[i].val=(float)W[i]/(float)P[i];
v[i].loc=i;
}
}
int greedy()
{
int i=1,Po=0;
ordonare();
i=1;
if(W[v[1].loc]>G)
Po=0;
else
while(i<=N&&G>=0)
{
Po=Po+P[v[i].loc];
G=G-W[v[i].loc];
i++;
}
return Po;
}
int main()
{
citire();
FILE *out;
out=fopen("rucsac.out","wt");
fprintf(out,"%d",greedy());
return 0;
}