Submission #343251

#TimeUsernameProblemLanguageResultExecution timeMemory
343251ivan_tudorSimple game (IZhO17_game)C++14
100 / 100
72 ms6892 KiB
#include<bits/stdc++.h>
using namespace std;
const int VMAX = 1e6+ 5;
const int N = 1e5 + 5;
int aib[VMAX];
void upd_aib(int poz,int val){
  for(int i = poz; i < VMAX; i+= i&(-i))
    aib[i] += val;
}
int query(int poz){
  int ans = 0;
  for(int i = poz; i>0; i-= i&(-i)){
    ans += aib[i];
  }
  return ans;
}
void update(int a, int b, int val){
  if( a > b)
    swap(a, b);
  upd_aib(a, val);
  upd_aib(b + 1, - val);
}
int v[N];
int main()
{
  //freopen(".in","r",stdin);
  ios::sync_with_stdio(false);
  cin.tie(0),cout.tie(0);
  int n, q;
  cin>>n>>q;
  for(int i=1;i<=n;i++){
    cin>>v[i];
  }
  for(int i = 2; i<=n;i++){
    update(v[i-1], v[i], 1);
  }
  for(int i=1; i<=q;i++){
    int tip;
    cin>>tip;
    if(tip == 1){
      int p, val;
      cin>>p>>val;
      if(p > 1)
        update(v[p-1], v[p], -1);
      if(p < n)
        update(v[p], v[p + 1], -1);
      v[p] = val;
      if(p > 1)
        update(v[p-1], v[p], 1);
      if(p < n)
        update(v[p], v[p + 1], 1);
    }
    else{
      int h;
      cin>>h;
      cout<<query(h)<<"\n";

    }
  }
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...