제출 #1141610

#제출 시각아이디문제언어결과실행 시간메모리
1141610sayanSjeckanje (COCI21_sjeckanje)C++20
15 / 110
186 ms444 KiB
#include <bits/stdc++.h> #define Sayan ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define ll long long #define file(s) if (fopen(s".in", "r")) freopen(s".in", "r", stdin), freopen(s".out", "w", stdout) #define sz() size() #define F first #define S second #define pb push_back #define yes cout << "YES\n" #define no cout << "NO\n" using namespace std ; const int dx[4] = {1,0,-1,0}, dy[4] = {0,1,0,-1}; const ll N = 200+5; const ll inf = 1e18; const int mod = 1e9+7; // 998244353; ////////////////////////////////////////////////////// ll TEST=0; ll n , q; map<ll,ll>mp; ll a[N] , dp[N] , lz[N*4]; pair<ll , ll> t[N*4]; ////////////////////////////////////////////////////// struct delai{ // ll l,r; }; // void push(ll tl,ll tr,ll v){ // t[v+v].F+=lz[v]; // t[v+v+1].F+=lz[v]; // t[v+v].S+=lz[v]; // t[v+v+1].S+=lz[v]; // lz[v+v]+=lz[v]; // lz[v+v+1]+=lz[v]; // lz[v]=0; // } // void build(ll v=1,ll tl=1,ll tr=n){ // if(tl==tr){ // t[v]={a[tl],a[tl]}; // return ; // } // ll tm=(tl+tr)/2; // build(v+v,tl,tm); // build(v+v+1,tm+1,tr); // t[v].F=min(t[v+v].F,t[v+v+1].F); // t[v].S=max(t[v+v].S,t[v+v+1].S); // } // ll get(ll l,ll r,ll ok,ll v=1,ll tl=1,ll tr=n){ // push(tl,tr,v); // if(l<=tl && tr<=r){ // if(ok==1)return t[v].F; // else return t[v].S; // } // if(tr<l or r<tl){ // if(ok==1)return inf; // else return 0; // } // ll tm=(tl+tr)/2; // if(ok==1)return min(get(l,r,ok,v+v,tl,tm),get(l,r,ok,v+v+1,tm+1,tr)); // else return max(get(l,r,ok,v+v,tl,tm),get(l,r,ok,v+v+1,tm+1,tr)); // } // void upd(ll l,ll r,ll sum,ll v=1,ll tl=1,ll tr=n){ // push(tl,tr,v); // if(l<=tl && tr<=r){ // t[v].F+=sum; // t[v].S+=sum; // lz[v]+=sum; // return; // } // if(tr<l or r<tl){ // return ; // } // ll tm=(tl+tr)/2; // upd(l,r,sum,v+v,tl,tm); // upd(l,r,sum,v+v+1,tm+1,tr); // t[v].F=min(t[v+v].F,t[v+v+1].F); // t[v].S=max(t[v+v].S,t[v+v+1].S); // } ////////////////////////////////////////////////////// void solve(){ cin >> n >> q; for(ll i = 1 ; i <= n ; i++){ cin >> a[i]; } for(ll i = 1 ; i <= n ; i++){ dp[i]=-inf; } // build(); while(q--){ ll l,r,sum; cin>>l>>r>>sum; // upd(l,r,sum); for(ll i=l;i<=r;i++)a[i]+=sum; ll ans=0; for(ll i=1;i<=n;i++)dp[i]=-inf; for(ll i=1;i<=n;i++){ for(ll j=i;j>=1;j--){ ll mn=inf; ll mx=-inf; for(ll k=j;k<=i;k++){ mn=min(mn,a[k]); mx=max(mx,a[k]); } dp[i]=max(dp[i],mx-mn+dp[j-1]); } ans=max(ans,dp[i]); } cout<<ans<<"\n"; } } signed main () { Sayan; ll t=1; if(TEST){ cin>>t; } while(t--)solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...