leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

1792.cpp (734B)


0 class Solution {
1 public:
2 double maxAverageRatio(const vector<vector<int>> &classes, int extraStudents) const {
3 typedef tuple<double, int, int> record;
4 static const auto profit = [](int p, int t) { return (double)(p + 1) / (t + 1) - (double)p / t; };
6 double res = 0;
7 priority_queue<record, vector<record>> pq;
8 for (const auto &c : classes) {
9 pq.emplace(profit(c[0], c[1]), c[0], c[1]);
10 res += (double)c[0] / c[1];
11 }
13 while (extraStudents--) {
14 const auto [a, p, t] = pq.top();
15 pq.pop();
16 pq.emplace(profit(p + 1, t + 1), p + 1, t + 1);
17 res += a;
18 }
20 return res / size(classes);
21 }
22 };