Submission #1167623

#TimeUsernameProblemLanguageResultExecution timeMemory
1167623WH8Sjeckanje (COCI21_sjeckanje)C++20
55 / 110
15 ms584 KiB

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>

using namespace std;
using namespace __gnu_pbds;
#define g0(x) get<0>(x)
#define g1(x) get<1>(x)
#define g2(x) get<2>(x)

#define pb push_back
#define int long long 
#define f first
#define s second
#define pll pair<long long, long long>
int mem[5005], a[5005], d[5005];
bool samesign(int a, int b){
	if((a<=0 and b<=0) or (a>0 and b>0))return true;
	return false;
}
signed main(){
	int n,q;cin>>n>>q;
	for(int i=0;i<n;i++){
		cin>>a[i];
		if(i>=1)d[i]=a[i]-a[i-1];
	}
	
	for(int i=0;i<q;i++){
		int l,r,c;cin>>l>>r>>c;
		l--,r--;
		d[l]+=c;
		d[r+1]-=c;
		//~ cout<<endl;
		//~ for(int j=0; j<n;j++)cout<<d[j]<<" ";
		//~ cout<<endl;
		fill(mem,mem+n+1,0);
		mem[1]=abs(d[1]);
		for(int j=2;j<n;j++){
			if(samesign(d[j-1], d[j])){
				mem[j]=mem[j-1]+abs(d[j]);
			}
			else{
				mem[j]=max(mem[j-2]+abs(d[j]),mem[j-1]);
			}
		}
		cout<<mem[n-1]<<endl;
	}
	
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...