Pagini recente » Cod sursa (job #1196265) | Cod sursa (job #1257761) | Cod sursa (job #1940134) | Cod sursa (job #934686) | Cod sursa (job #1579790)
#include <stdio.h>
#include <algorithm>
FILE*f=fopen("rucsac.in","r");
FILE*h=fopen("rucsac.out","w");
using namespace std;
struct ob
{
double c,g;
int o;
}a[100];
double gmax,ct,gm;
int n;
int comp(ob a, ob b)
{
return ((float)a.c/a.g>(float)b.c/b.g);
}
void citire()
{
int i;
fscanf(f,"%d%d",&n,&gm);
for (i=1;i<=n;i++) fscanf(f,"%lf%lf",&a[i].g,&a[i].c);
}
int main()
{
int i;
citire();
sort(a+1,a+n+1,comp);
ct=0;
i=1;
while(gm>0 && i<=n)
{
if(a[i].g<=gm)
{
gm-=a[i].g;
ct+=a[i].c;
}
else { if (a[i].g==gm){
ct+=a[i].c*(gm/a[i].g);
gm=0;}
}i++;
}
fprintf(h,"%.2lf",ct);
return 0;
}