Skip to content

Commit c3e9fd5

Browse files
authored
Create describe-the-painting.cpp
1 parent 210a03e commit c3e9fd5

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

C++/describe-the-painting.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
// Time: O(nlogn)
2+
// Space: O(n)
3+
4+
class Solution {
5+
public:
6+
vector<vector<long long>> splitPainting(vector<vector<int>>& segments) {
7+
unordered_map<int, int64_t> events;
8+
for (const auto& s : segments) {
9+
events[s[0]] += s[2];
10+
events[s[1]] -= s[2];
11+
}
12+
vector<pair<int, int64_t>> points(cbegin(events), cend(events));
13+
sort(begin(points), end(points));
14+
15+
vector<vector<long long>> result;
16+
int64_t overlap = 0, prev = 0;
17+
for (const auto& [curr, cnt] : points) {
18+
if (overlap) {
19+
result.push_back({prev, curr, overlap});
20+
}
21+
overlap += cnt;
22+
prev = curr;
23+
}
24+
return result;
25+
}
26+
};

0 commit comments

Comments
 (0)