#include <iostream>
using namespace std;
const int N = 1<<20;
int h[N], ft[N];
void Add(int i, int v){
for (; i < N; i += i & -i)
ft[i] += v;
}
int get(int i, int ans = 0){
for (; i; i -= i & -i)
ans += ft[i];
return ans;
}
void process(int i, int v){
if (i == 0 or h[i+1] == 0)
return;
Add(min(h[i], h[i+1]), v);
Add(max(h[i], h[i+1]), -v);
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
int n, q;
cin>>n>>q;
for (int i=1;i<=n;i++){
cin>>h[i];
process(i-1, 1);
}
for (int i=1;i<=q;i++){
int t, id, H;
cin>>t;
if (t == 1){
cin>>id>>H;
process(id-1, -1);
process(id, -1);
h[id] = H;
process(id-1, 1);
process(id, 1);
}
else{
cin>>H;
cout<<get(H)<<'\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... |