Pagini recente » Cod sursa (job #1964624) | Cod sursa (job #2219353) | Cod sursa (job #557534) | Cod sursa (job #273563) | Cod sursa (job #2718571)
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,gMax;
FILE *fin,*fout;
struct obiecte
{
int greutate;
float val;
float raport;
} v[1001];
int cmp(obiecte a,obiecte b)
{
if(a.raport>b.raport)
{
return 1;
}
return 0;
}
void afisare()
{
for(int i=1; i<=n; i++)
{
fprintf(fout,"%d %d\n",v[i].greutate,v[i].val);
}
fprintf(fout,"\n");
}
int main()
{
fin=fopen("rucsac.in","r");
fout=fopen("rucsac.out","w");
fscanf(fin,"%d %d",&n,&gMax);
for(int i=1; i<=n; i++)
{
fscanf(fin,"%d %f",&v[i].greutate,&v[i].val);
v[i].raport=v[i].val/v[i].greutate;
}
//fclose(fin);
stable_sort(v+1,v+n+1,cmp);
// afisare();
float total=0; // valoarea totala
int greutate=0;
int i=1;
while(v[i].greutate<=gMax)
{
//greutate+=v[i].greutate;
gMax-=v[i].greutate;
// printf("gMax=%d\n",gMax);
total+=v[i].val;
i++;
}
fprintf(fout,"%.f",total);
return 0;
}