leetcodeSolution to some Leetcode problems written in C++ |
git clone git://git.dimitrijedobrota.com/leetcode.git |
Log | Files | Refs | README | LICENSE | |
commit | 257b78260e9fdf450bb2f02d82353a36961d6778 |
parent | 9e15dcefeca18cc159971a77fcfa0cf6fbe824df |
author | Dimitrije Dobrota <mail@dimitrijedobrota.com> |
date | Thu, 23 Feb 2023 10:08:43 +0100 |
Daily Problem
Diffstat:A | Problems/0502.cpp | | | +++++++++++++++++++++++++++++++++++ |
M | README.md | | | + |
2 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/Problems/0502.cpp b/Problems/0502.cpp
@@ -0,0 +1,35 @@
class Solution {
typedef pair<int, int> pii;
public:
int findMaximizedCapital(int k, int w, vector<int> &profits,
vector<int> &capital) {
vector<pii> data(profits.size());
for (int i = 0; i < profits.size(); i++) data[i] = {capital[i], profits[i]};
sort(data.begin(), data.end());
auto cmp = [](const pii &a, const pii &b) { return a.second < b.second; };
priority_queue<pii, vector<pii>, decltype(cmp)> pq(cmp);
int i = 0;
while (i < profits.size() && k) {
if (data[i].first <= w)
pq.push(data[i++]);
else {
while (!pq.empty() && data[i].first > w && k) {
w += pq.top().second;
pq.pop();
k--;
}
if (pq.empty() && data[i].first > w) break;
}
}
while (!pq.empty() && k) {
w += pq.top().second;
pq.pop();
k--;
}
return w;
}
};
diff --git a/README.md b/README.md
@@ -246,6 +246,7 @@ for solving problems.
| 0496 | Medium | [Next Greater Element I](Problems/0496.cpp) |
| 0498 | Medium | [Diagonal Traverse](Problems/0498.cpp) |
| 0501 | Easy | [Find Mode in Binary Search Tree](Problems/0501.cpp) |
| 0502 | Hard | [IPO](Problems/0502.cpp) |
| 0503 | Medium | [Next Greater Element II](Problems/0503.cpp) |
| 0509 | Easy | [Fibonacci Number](Problems/0509.cpp) |
| 0516 | Medium | [Longest Palindromic Subsequence](Problems/0516.cpp) |