Submission #993050

#TimeUsernameProblemLanguageResultExecution timeMemory
993050vjudge1Sjeckanje (COCI21_sjeckanje)C++17
110 / 110
316 ms26964 KiB
#include <bits/stdc++.h> #define int long long #define fi first #define se second #define pb push_back #define pii pair<int,int> using namespace std; int a[200005], p[200005]; struct ha{ int oo , ox , xo , xx; void mix(ha& a , ha& b, int mid , int l , int r){ oo = max({a.ox+b.xo , a.ox+b.oo , a.oo+b.xo}); ox = max({a.ox+b.ox , a.oo+b.xx , a.ox+b.xx}); xo = max({a.xx+b.xo , a.xx+b.oo , a.xo+b.xo }); xx = max({a.xx+b.xx , a.xo+b.xx , a.xo +b.xx , a.xx+b.ox}); if(((p[mid]>= 0 && p[mid+1]>=0) || (p[mid]<= 0 && p[mid+1] <= 0))){ oo = max({oo , a.ox +b.xo , a.oo +b.xo ,a.oo +b.oo , a.ox+b.oo}); ox = max({ox , a.ox +b.xx , a.oo +b.xx, a.oo+b.ox, a.ox +b.ox}); xo = max({xo , a.xx+b.xo , a.xx+b.oo , a.xo +b.xo , a.xo +b.oo}); xx = max({xx , a.xx+b.xx , a.xx+b.ox , a.xo+b.xx , a.xo+b.ox} ); } } int mx(){ return max({oo , ox , xo , xx}); } }; ha seg[800005]; int gg = -1e18; void build(int id , int l , int r){ if(l==r){ seg[id] = {abs(p[l]), 0, 0 ,0}; return ; } int mid = (l+r)/2; build(id*2 , l , mid); build(id*2+1 , mid+1 , r); seg[id].mix(seg[id*2], seg[id*2+1], mid, l , r); } void up(int id , int l , int r , int u){ if(l>u||r < u) return ; if(l==r){ seg[id].oo = abs(p[l]); return ; } int mid = (l+r)>>1; up(id*2 , l , mid , u ); up(id*2+1 , mid+1 , r , u ); seg[id].mix(seg[id*2], seg[id*2+1], mid, l , r); } signed main(){ // freopen("optmilk.in","r" , stdin ); // freopen("optmilk.out","w" , stdout); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n , q , l , r , x; cin >> n >> q ; for(int i = 1 ;i <= n ; i++){ cin >> a[i]; if(i > 1){ p[i-1] =a[i]-a[i-1]; } } n--; build(1 , 1 , n ); // cout << seg[2].ox<<" "<<seg[3].xx<<'\n'; while(q --){ cin >> l >> r >> x; p[l-1]+=x; p[r]-=x; up(1 , 1 , n , l-1 ); up(1 , 1 , n , r ); cout <<seg[1].mx() <<'\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...