Pagini recente » Cod sursa (job #1643665) | Cod sursa (job #3209592) | Cod sursa (job #2405969) | Cod sursa (job #2641875) | Cod sursa (job #2860578)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
struct obiect{
int g,v;
};
int n, gmax;
obiect a[1005];
bool comp(obiect A, obiect B)
{
return A.v * B.g > A.g * B.v;
}
int main()
{
cin>>n>>gmax;
for(int i=1;i<=n;++i)
cin>>a[i].g>>a[i].v;
sort(a+1,a+n+1,comp);
int g = 0 , i = 1;
double rez = 0;
while(i <= n)
{
if(g + a[i].g <= gmax)
{
g += a[i].g;
rez += a[i].v;
i ++;
}
else if(gmax - g > 0)
{
double fractiune = 1.0 * (gmax - g) / a[i].g;
g = gmax;
rez += fractiune * a[i].v;
i++;
}
else break;
}
cout << rez;
return 0;
}