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;
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());
10 auto cmp = [](const pii &a, const pii &b) { return a.second < b.second; };
11 priority_queue<pii, vector<pii>, decltype(cmp)> pq(cmp);
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 }
32 return w;
33 }
34 };