leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE |
0502.cpp (1039B)
0 class Solution { 1 typedef pair<int, int> pii; 2 3 public: 4 int findMaximizedCapital(int k, int w, vector<int> &profits, vector<int> &capital) { 5 vector<pii> data(profits.size()); 6 for (int i = 0; i < profits.size(); i++) 7 data[i] = {capital[i], profits[i]}; 8 sort(data.begin(), data.end()); 9 10 auto cmp = [](const pii &a, const pii &b) { return a.second < b.second; }; 11 priority_queue<pii, vector<pii>, decltype(cmp)> pq(cmp); 12 13 int i = 0; 14 while (i < profits.size() && k) { 15 if (data[i].first <= w) 16 pq.push(data[i++]); 17 else { 18 while (!pq.empty() && data[i].first > w && k) { 19 w += pq.top().second; 20 pq.pop(); 21 k--; 22 } 23 if (pq.empty() && data[i].first > w) break; 24 } 25 } 26 while (!pq.empty() && k) { 27 w += pq.top().second; 28 pq.pop(); 29 k--; 30 } 31 32 return w; 33 } 34 };