Pagini recente » Cod sursa (job #533995) | Cod sursa (job #2884203) | Cod sursa (job #930680) | Cod sursa (job #580652) | Cod sursa (job #2589692)
#include <bits/stdc++.h>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
struct ob {
double g, valoare, e;
} obj[5001];
int n;
double mw;
bool comp(ob a, ob b) {
return a.e > b.e;
}
int main()
{
in >> n >> mw;
for(int i = 1; i <= n; i++) {
in >> obj[i].g >> obj[i].valoare;
obj[i].e = obj[i].valoare / obj[i].g;
}
sort(obj + 1, obj + 1 + n, comp);
long double t = 0;
for(int i = 1; i <= n && mw > 0; i++) {
if(mw - obj[i].g >= 0) {
t += obj[i].valoare;
} else {
t += mw * obj[i].valoare / obj[i].g;
}
mw -= obj[i].g;
}
out << (int)t;
return 0;
}