Maximum Fruits Harvested After at Most K Steps LeetCode solution in C++

1
int MX = 2e5 + 2;
2
class Solution {
3
public:
4
int maxTotalFruits(vector<vector<int>> &fruits, int startPos, int k) {
5
int i, l, r, ans = 0;
6
startPos++; // incremented positions by one to make calculations easier.
7
vector<int> prefix_sum(MX);
8
for (auto &it : fruits) prefix_sum[it[0] + 1] = it[1];
9
for (i = 1; i < MX; i++) prefix_sum[i] += prefix_sum[i - 1];
10

11
for (r = startPos; r < MX && r <= startPos + k; r++) {
12
l = min(startPos, startPos - (k - 2 * (r - startPos)));
13
l = max(1, l);
14
ans = max(ans, prefix_sum[r] - prefix_sum[l - 1]);
15
}
16

17
for (l = startPos; l > 0 && l >= startPos - k; l--) {
18
r = max(startPos, startPos + (k - 2 * (startPos - l)));
19
r = min(MX - 1, r);
20
ans = max(ans, prefix_sum[r] - prefix_sum[l - 1]);
21
}
22
return ans;
23
}
24
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0