已ac

Y  •  3天前


include

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;

}


评论:

请先登录,才能进行评论