只过#1,#2测试点,悬赏yi关注
#include<bits/stdc++.h>
using namespace std;
const int N=8e3+10;
const int M=2e5+10;
int n,q,b[N];
struct cyx{int s,num;} a[N];
inline bool cmp1(cyx x,cyx y){
if(x.s ==y.s ) return x.num <y.num ;
return x.s < y.s ;
}
int main()
{
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){scanf("%d",&a[i].s );a[i].num =i;}
sort(a+1,a+1+n,cmp1);//升序
for(int i=1;i<=q;i++){
bool f;
int op,x,j,v;scanf("%d",&op);
if(op==1) scanf("%d%d",&x,&v);
else scanf("%d",&x);
if(op==1){
for(j=1;j<=n;j++){
if(a[j].num ==x){
if(a[j].s >v) f=0;//调小
else f=1;a[j].s =v;break;
}
}
if(f){//调大
for(int k=j+1;k<=n;k++){
if(a[k].s <a[j].s || a[k].s ==a[j].s &&a[k].num <a[j].num ){
swap(a[k],a[j]);
}else break;
}
}else{//调小
for(int k=j-1;k>=1;k--){
if(a[k].s >a[j].s || a[k].s ==a[j].s &&a[k].num >a[j].num ){
swap(a[k],a[j]);
}else break;
}
}
}else{
for(int k=1;k<=n;k++){
if(x==a[k].num ){
printf("%d\n",k);
break;
}
}
}
}
return 0;
}