#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
using namespace __gnu_pbds;
#define int long long
#define ll long long
#define ld long double
#define ar array
#define all(v) v.begin(), v.end()
using namespace std;
const int N = 1e6 + 20;
const int LOG = 20;
const int INF = 1e12;
const int MOD = 1e9 + 7;
void chmin(int &x,int y){x = min(x, y);};
void chmax(int &x,int y){x = max(x, y);};
void mm(int &x){x = (x % MOD + MOD) % MOD;};
int fwt[N];
void upd(int i,int v){
for(i++;i < N;i += i & -i)fwt[i] += v;
}
void upd(int a,int b,int v){
if(a > b)swap(a, b);
upd(a, v);
upd(b + 1, -v);
}
int qry(int i){
int ans = 0;
for(i++;i;i -= i & -i)ans += fwt[i];
return ans;
}
signed main(){ios_base::sync_with_stdio(false);cin.tie(0);
int n, m;
cin>>n>>m;
int A[n];
for(int i = 0;i < n;i++)cin>>A[i];
for(int i = 0;i + 1 < n;i++)upd(A[i], A[i + 1], 1);
while(m--){
int qt;
cin>>qt;
if(qt == 1){
int i;
cin>>i;
--i;
if(i)upd(A[i - 1], A[i], -1);
if(i + 1 < n)upd(A[i], A[i + 1], -1);
cin>>A[i];
if(i)upd(A[i - 1], A[i], 1);
if(i + 1 < n)upd(A[i], A[i + 1], 1);
}else{
int x;
cin>>x;
cout<<qry(x)<<'\n';
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |