不知道为啥8分,过了样例,只对了前两个点
#include <bits/stdc++.h>
using namespace std;
#define rep(i,l,r) for(int i = (int)l;i <= (int)r;i++)
#define per(i,r,l) for(int i = (int)r;i >= (int)l;i--)
#define pb push_back
#define all(a) a.begin(),a.end()
#define fi first
#define se second
#define SZ(a) (int)(a.size())
#define minst(a) memset(a,0,sizeof(a))
#define minstf(a) memset(a,128,sizeof(a))
#define maxst(a) memset(a,0x3f,sizeof(a))
typedef vector<int> VI;
typedef pair<int,int> PII;
typedef long long ll;
typedef double db;
const int N=1e4+10,INF=1e9,mod=INF+7;
int n,m;
int ans[N];
PII a[N];
int main()
{
scanf("%d%d",&n,&m);
rep(i,1,n){
scanf("%d",&a[i].fi);
a[i].se = i;
}
sort(a+1,a+1+n);
rep(i,1,n)
ans[a[i].se] = i;
while(m--){
int opt,x,v;
scanf("%d%d",&opt,&x);
if(opt == 1){
scanf("%d",&v);
if(v > a[ans[x]].fi){
rep(i,ans[x]+1,n){
if(a[i].fi < v || (a[i].fi == v && a[i].se < x)){
swap(a[ans[x]],a[i]);
}
}
}else if(v < a[ans[x]].fi){
rep(i,1,ans[x]-1){
if(a[i].fi > v || (a[i].fi == v && a[i].se > x)){
swap(a[ans[x]],a[i]);
}
}
}
a[ans[x]].fi = v;
rep(i,1,n)
ans[a[i].se] = i;
}else {
printf("%d\n",ans[x]);
}
}
return 0;
}