#include<iostream>
#include<cstdio>
#include<utility>
#define node pair<int,int>
#include<algorithm>
#define inf 0x3f3f3f3f
using namespace std;
const int N=8e3+5;
node a[N];
int n,q;
void solve(int x,int v){
for(int i=1;i<=n;i++)
if(a[i].second==x){
x=i,a[i].first=v;
break;
}
while(a[x-1].first>a[x].first||(a[x-1].first==a[x].first&&a[x-1].second>a[x].second)){
swap(a[x-1],a[x]),x--;
}
while(a[x+1].first<a[x].first||(a[x+1].first==a[x].first&&a[x+1].second<a[x].second)){
swap(a[x+1],a[x]),x++;
}
}
void print(){
for(int i=1;i<=n;i++) printf("%d%c",a[i].first," \n"[i==n]);
for(int i=1;i<=n;i++) printf("%d%c",a[i].second," \n"[i==n]);
}
int main() {
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) scanf("%d",&a[i].first),a[i].second=i;
sort(a+1,a+1+n);
a[0].first=-inf;
a[n+1].first=inf;
while(q--){
// print();
int op,x,v;
scanf("%d%d",&op,&x);
if(op==1){
scanf("%d",&v);
solve(x,v);
}
if(op==2){
for(int i=1;i<=n;i++)
if(a[i].second==x){
printf("%d\n",i);
break;
}
}
}
}
感觉时间复杂度是 O(nq) 的啊,为什么能过啊,是我算错了还是数据太水了