Y • 3天前
using namespace std;
const int N = 8010; int a[N]; int eq[N],le[N]; int n,q;
void change(int x,int v){
int cnteq = 0,cntle = 0 ;
for(int i=1;i<x;i++){
if(a[i] == v) cnteq++;
if(a[i] < v) cntle++;
if(a[i] > a[x]) le[i]--;
if(a[i] > v ) le[i]++;
}
eq[x] = cnteq;
for(int i=x+1;i<=n;i++){
if(a[i] < v) cntle++;
if(a[i] == v) eq[i]++;
if(a[i] > v) le[i]++;
if(a[i] > a[x]) le[i]--;
if(a[i] == a[x]) eq[i]--;
}
a[x] = v;
le[x] = cntle;
return ;
}
int main(){
scanf("%d%d",&n,&q);
for(int i = 1;i<=n;i++) scanf("%d",&a[i]);
int cnteq,cntle;
for(int i=1;i<=n;i++){
cnteq=0,cntle=0;
for(int j=1;j<i;j++){
if(a[j] == a[i]) cnteq++;
if(a[j] < a[i]) cntle++;
}
eq[i] = cnteq;
for(int j=i+1;j<=n;j++) if(a[j] < a[i]) cntle++;
le[i] = cntle;
}
int type;
while(q--){
scanf("%d",&type);
if(type == 1){
int x,v;
scanf("%d%d",&x,&v);
change(x,v);
}else{
int x;
scanf("%d",&x);
printf("%d\n",eq[x]+le[x]+1);
}
}
return 0;
}
评论:
请先登录,才能进行评论