https://tools.xxooooxx.org/su/gsxoFYBMP
Tag: Binary Search, Prefix Sum
class Solution {
public:
int minZeroArray(vector<int>& nums, vector<vector<int>>& queries) {
int m = nums.size(), n = queries.size();
int l = 0, r = n + 1;
while (l < r) {
int len = (l + r) >> 1;
vector<int> prefix(m, 0);
for (int i = 0; i < len; i++) {
prefix[queries[i][0]] += queries[i][2];
if (queries[i][1] + 1 < m) prefix[queries[i][1] + 1] -= queries[i][2];
}
for (int i = 1; i < m; i++) prefix[i] += prefix[i - 1];
int mx = INT_MIN;
for (int i = 0; i < m; i++) mx = max(mx, nums[i] - prefix[i]);
if (mx <= 0) {
r = len;
} else {
if (len == n) return -1;
l = len + 1;
}
}
return l;
}
};