제출 #379310

#제출 시각아이디문제언어결과실행 시간메모리
379310limabeansSjeckanje (COCI21_sjeckanje)C++17
55 / 110
2078 ms4288 KiB
#include <bits/stdc++.h>
using namespace std;

template<typename T>
void out(T x) { cout << x << endl; exit(0); }
#define watch(x) cout << (#x) << " is " << (x) << endl





using ll = long long;


const int maxn = 1e6 + 5;



int n,q;
ll a[maxn];

ll solve() {
    ll dp0 = 0;
    ll dp1 = 0;
    
    ll diff0 = 0;
    for (int i=2; i<=n; i++) {
	ll diff = a[i]-a[i-1];
	if (diff0*diff>=0) {
	    ll _dp0 = max(dp0,dp1);
	    ll _dp1 = max(dp1,dp0)+abs(diff);
	    dp0 = _dp0;
	    dp1 = _dp1;
	} else {
	    ll _dp0 = max(dp0,dp1);
	    ll _dp1 = dp0+abs(diff);
	    dp0 = _dp0;
	    dp1 = _dp1;
	}
	diff0 = diff;
    }
    return max(dp0, dp1);
}

int main() {
    ios_base::sync_with_stdio(false); cin.tie(0);  cout.tie(0);

    cin>>n>>q;
    for (int i=1; i<=n; i++) {
	cin>>a[i];
    }

    while (q--) {
	int l,r,dx;
	cin>>l>>r>>dx;
	for (int i=l; i<=r; i++) {
	    a[i] += dx;
	}
	cout<<solve()<<"\n";
    }
    
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...