#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld double
#define FOR(i,l,r) for(int i = (l), _r = (r); i <= _r; i++)
#define FORNG(i,r,l) for(int i = (r), _l = (l); i >= _l; i--)
#define REP(i,r) for(int i = 0, _r = (r); i < _r; i++)
#define endl '\n'
#define fi first
#define se second
#define pb push_back
#define all(v) (v).begin(),(v).end()
#define size(v) ((int)(v).size())
#define MASK(x) (1 << (x))
#define BIT(x, i) (((x) >> (i)) & 1)
const ll MOD = 1e9 + 7, N = 2e5 + 10, INF = (ll)1e18 + (ll)1e17, LOG = 20;
ll n,q,a[N],st[N * 4][2][2];
void merge(int c,int l,int r){
REP(x,2)REP(y,2)st[c][x][y] = max(st[l][x][0] + st[r][0][y],st[l][x][1] + st[r][1][y]);
}
void build(int id = 1,int l = 1,int r = n){
if(l == r){
if(a[l] < 0)st[id][0][0] = -a[l];
else st[id][1][1] = +a[l];
return;
}
int mid = (l + r) >> 1;
build(id * 2, l, mid);
build(id * 2 + 1, mid + 1, r);
merge(id, id * 2, id * 2 + 1);
}
void update(int p,int id = 1,int l = 1,int r = n){
if(p < l || r < p)return;
if(l == r){
REP(x,2)REP(y,2)st[id][x][y] = 0;
if(a[l] < 0)st[id][0][0] = -a[l];
else st[id][1][1] = +a[l];
return;
}
int mid = (l + r) >> 1;
update(p, id * 2, l, mid);
update(p, id * 2 + 1, mid + 1, r);
merge(id, id * 2, id * 2 + 1);
}
void printTree(int id = 1,int l = 1,int r = n){
cout<<id<<' '<<l<<' '<<r<<":"<<st[id][0][0]<<' '<<st[id][0][1]<<' '<<st[id][1][0]<<' '<<st[id][1][1]<<endl;
if(l == r)return;
int mid = (l + r) >> 1;
printTree(id * 2, l, mid);
printTree(id * 2 + 1, mid + 1, r);
}
int main(){
// freopen(".inp", "r", stdin);
// freopen(".out", "w", stdout);
ios_base::sync_with_stdio(0);cin.tie(0);
cin>>n>>q;
FOR(i,1,n)cin>>a[i];
FOR(i,1,n - 1)a[i] = a[i + 1] - a[i];
n--;
build();
while(q--){
int l,r,x;cin>>l>>r>>x;
if(l != 1)a[l - 1] += x, update(l - 1);
if(r != n + 1)a[r] -= x, update(r);
cout<<max({st[1][0][0], st[1][0][1], st[1][1][0], st[1][1][1]})<<endl;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |