Submission #1313240

#TimeUsernameProblemLanguageResultExecution timeMemory
1313240hgiaSjeckanje (COCI21_sjeckanje)C++20
110 / 110
591 ms22828 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int n,q;
int a[N],d[N];
int dp[N*4][2][2];
void mergee(int id,int l,int r)
{
  int mid=l+r>>1;
  int left=id*2;
  int right=id*2+1;
  for(int i=0;i<2;i++)
    for(int j=0;j<2;j++)
    {
      dp[id][i][j]=-1e18;
      for(int x=0;x<2;x++)
        for(int y=0;y<2;y++)
        {
          if(x==1&&y==1&&d[mid]*d[mid+1]<0)continue;
          dp[id][i][j]=max(dp[id][i][j],dp[left][i][x]+dp[right][y][j]);
        }
    }
}
void update(int id,int l,int r,int pos,int val)
{
  if(pos<l||pos>r)return ;
  if(l==r)
  {
    dp[id][0][0]=0;
    dp[id][1][1]=val;
    dp[id][0][1]=dp[id][1][0]=-1e18;
    return;
  }
  int mid=l+r>>1;
  update(id*2,l,mid,pos,val);
  update(id*2+1,mid+1,r,pos,val);
  mergee(id,l,r);
}
void de(int id,int l,int r)
{
  int mid=l+r>>1;
  cout<<l<<" "<<r<<" "<<dp[id][1][1]<<endl;
  if(l==r)return ;
  de(id*2,l,mid);
  de(id*2+1,mid+1,r);
}
signed main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin>>n>>q;
  for(int i=1;i<=n;i++)cin>>a[i];
  for(int i=1;i<n;i++)
  {
    d[i]=a[i+1]-a[i];
    update(1,1,n-1,i,abs(d[i]));
  }
  // cout<<dp[1][1][1]<<endl;
  for(int i=1;i<=q;i++)
  {
    int l,r,val;
    cin>>l>>r>>val;
    l--;
    // cout<<l<<" "<<r<<endl;
    if(l!=0)
    {
      d[l]+=val;
      update(1,1,n-1,l,abs(d[l]));
      
    }
    if(r!=n)
    {
      d[r]-=val;
      update(1,1,n-1,r,abs(d[r]));
    }
    // cout<<l<<" "<<r<<endl;
    cout<<max({dp[1][1][1],dp[1][1][0],dp[1][0][1],dp[1][0][0]})<<endl;
  }
  // de(1,1,n-1);
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...