Skip to content

Commit 03c4bbf

Browse files
authored
Update maximum-number-of-events-that-can-be-attended-ii.cpp
1 parent 220224d commit 03c4bbf

File tree

1 file changed

+12
-18
lines changed

1 file changed

+12
-18
lines changed

C++/maximum-number-of-events-that-can-be-attended-ii.cpp

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,15 @@ class Solution {
88
[](const auto& a, const auto& b) {
99
return a[1] < b[1];
1010
});
11-
vector<int> prv(size(events));
12-
for (int i = 0; i < size(events); ++i) {
13-
prv[i] = distance(cbegin(events),
14-
prev(lower_bound(cbegin(events), cend(events), events[i],
15-
[](const auto& a, const auto& b) {
16-
return a[1] < b[0];
17-
})));
18-
}
1911
vector<vector<int>> dp(size(events) + 1, vector<int>(k + 1));
2012
for (int i = 1; i <= size(events); ++i) {
13+
auto prev_i_1 = distance(cbegin(events),
14+
prev(lower_bound(cbegin(events), cend(events), events[i - 1],
15+
[](const auto& a, const auto& b) {
16+
return a[1] < b[0];
17+
})));
2118
for (int j = 1; j <= k; ++j) {
22-
dp[i][j] = max(dp[i - 1][j], dp[prv[i - 1] + 1][j - 1] + events[i - 1][2]);
19+
dp[i][j] = max(dp[i - 1][j], dp[prev_i_1 + 1][j - 1] + events[i - 1][2]);
2320
}
2421
}
2522
return dp[size(events)][k];
@@ -32,18 +29,15 @@ class Solution2 {
3229
public:
3330
int maxValue(vector<vector<int>>& events, int k) {
3431
sort(begin(events), end(events));
35-
vector<int> nxt(size(events));
36-
for (int i = 0; i < size(events); ++i) {
37-
nxt[i] = distance(cbegin(events),
38-
prev(upper_bound(cbegin(events), cend(events), events[i],
39-
[](const auto& a, const auto& b) {
40-
return a[1] < b[0];
41-
})));
42-
}
4332
vector<vector<int>> dp(size(events) + 1, vector<int>(k + 1));
4433
for (int i = size(events) - 1; i >= 0; --i) {
34+
auto next_i = distance(cbegin(events),
35+
prev(upper_bound(cbegin(events), cend(events), events[i],
36+
[](const auto& a, const auto& b) {
37+
return a[1] < b[0];
38+
})));
4539
for (int j = 1; j <= k; ++j) {
46-
dp[i][j] = max(dp[i + 1][j], dp[nxt[i] + 1][j - 1] + events[i][2]);
40+
dp[i][j] = max(dp[i + 1][j], dp[next_i + 1][j - 1] + events[i][2]);
4741
}
4842
}
4943
return dp[0][k];

0 commit comments

Comments
 (0)