Pagini recente » Cod sursa (job #2398056) | Istoria paginii runda/xpp | Cod sursa (job #1542392) | Cod sursa (job #1274743) | Cod sursa (job #2376784)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
struct obiect{
float greutate;
float profit;
float profitunitar;
};
bool verif(obiect i,obiect j)
{
if(i.profitunitar!=j.profitunitar)
return(i.profitunitar>j.profitunitar);
return(i.greutate<j.greutate);
}
int main()
{
int n , g , w=0,profit=0;
obiect v[5001];
in>>n;
in>>g;
for(int i=1;i<=n;i++)
{
in>>v[i].greutate;
in>>v[i].profit;
v[i].profitunitar=(float)(v[i].profit/v[i].greutate);
}
sort(v+1 , v+n+1,verif);
for(int i=1;i<=n;i++)
{
cout<<v[i].greutate<<" ";
cout<<v[i].profit<<" ";
cout<<v[i].profitunitar<<endl;
}
for(int i=1;i<=n&&w!=g;i++)
{
if(w+v[i].greutate<=g)
{
w+=v[i].greutate;
profit+=v[i].profit;
}
}
out<<profit;
return 0;
}