이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <bits/stdc++.h>
using namespace std;
const int N = 1000000;
int t[N+9],a[100100];
int n;
void add(int k, int val){
while(k<=N){
t[k]+=val;
k+=k&-k;
}
}
void gosh(int a, int b, int val){
if(a>b) swap(a,b);
add(a,val);
add(b+1,-val);
}
int sum(int pos){
int s = 0;
while(pos>0){
s+=t[pos];
pos-=pos&-pos;
}
return s;
}
int main(){
cin>>n;
int q;
cin>>q;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<n;i++) gosh(a[i],a[i+1],1);
while(q--){
int type;
cin>>type;
if(type==1){
int pos, val;
cin>>pos>>val;
if(pos>1) gosh(a[pos-1],a[pos],-1);
if(pos<n) gosh(a[pos],a[pos+1],-1);
a[pos] = val;
if(pos>1) gosh(a[pos-1],a[pos],1);
if(pos<n) gosh(a[pos],a[pos+1],1);
}
else{
int pos;
cin>>pos;
cout << sum(pos) << endl;
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |