Medium
Maximum Price to Fill a Bag — C++
Full explanation · Time O(nlogn) · Space O(1)
// Time: O(nlogn)
// Space: O(1)
// greedy, sort
class Solution {
public:
double maxPrice(vector<vector<int>>& items, int capacity) {
sort(begin(items), end(items), [](const auto& a, const auto& b) {
return a[0] * b[1] > a[1] * b[0];
});
double result = 0;
for (const auto& item : items) {
const auto cnt = min(item[1], capacity);
capacity -= cnt;
result += (static_cast<double>(item[0]) / item[1]) * cnt;
}
return capacity == 0 ? result : -1;
}
};