#include <bits/stdc++.h>
using namespace std;
int solve(vector<int> v) {
int n = v.size();
int dp[n+2];
long long pre[n+2];
pre[0] = 0;
for(int i=0;i<n;i++)
pre[i+1] = pre[i] + v[i];
pre[n+1] = pre[n];
memset(dp,-2,sizeof(dp));
dp[0] = 0;
dp[1] = 1;
for(int i=2;i<n+2;i++) {
for(int j=max(0,i-69);j<i;j++)
if(pre[i-1] - pre[j] > max(v[i-1], j?v[j-1]:0))
dp[i] = max(dp[i], dp[j] + 2);
}
return max(dp[n+1] - 1, dp[n]);
}
int main() {
int n;
cin >> n;
int l[n];
for(int i=0;i<n;i++)
cin >> l[i];
int q;
cin >> q;
while(q--) {
int x, y, a, b;
cin >> x >> y >> a >> b;
l[--x] = y;
cout << solve(vector<int>(l+a,l+b)) << "\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |