Number of Orders in the Backlog LeetCode solution in C++

1
class Solution {
2
public:
3
int getNumberOfBacklogOrders(vector<vector<int>> &orders) {
4
int n = orders.size();
5
// 0 - buy , 1 - sell;
6
priority_queue<vector<int>> buyBacklog;
7
priority_queue<vector<int>, vector<vector<int>>, greater<vector<int>>> sellBacklog;
8

9
for (auto order : orders) {
10
if (order[2] == 0)
11
buyBacklog.push(order);
12
else
13
sellBacklog.push(order);
14

15
while (!buyBacklog.empty() && !sellBacklog.empty() &&
16
sellBacklog.top()[0] <= buyBacklog.top()[0]) {
17
auto btop = buyBacklog.top();
18
buyBacklog.pop();
19
auto stop = sellBacklog.top();
20
sellBacklog.pop();
21
int diff = btop[1] - stop[1];
22
if (diff > 0) {
23
btop[1] = diff;
24
buyBacklog.push(btop);
25
} else if (diff < 0) {
26
stop[1] = abs(diff);
27
sellBacklog.push(stop);
28
}
29
}
30
}
31

32
int ans = 0, mod = 1e9 + 7;
33
while (!buyBacklog.empty()) {
34
ans = (ans + buyBacklog.top()[1]) % mod;
35
buyBacklog.pop();
36
}
37
while (!sellBacklog.empty()) {
38
ans = (ans + sellBacklog.top()[1]) % mod;
39
sellBacklog.pop();
40
}
41
return ans;
42
}
43
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0