8分改了80分钟了,实在不行了
#include<bits/stdc++.h>
using namespace std;
int n,T,t[10005];
struct node{
int v,sit;//v是数值,sit是位置
}a[10005];
bool cmp(node x,node y){//结构体比较
if(x.v!=y.v) return x.v<y.v;
return x.sit<y.sit;
}
int main(){
cin>>n>>T;
for(int i=1;i<=n;i++){
cin>>a[i].v;
a[i].sit=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)
t[a[i].sit]=i;//用桶判断位置
while(T--){
int x,y,z;
cin>>x;
if(x==1){
cin>>y>>z;
a[t[y]].v=z;//改数值
for(int i=2;i<=n;i++){//正扫一遍
if(cmp(a[i],a[t[y]]))
swap(a[i],a[t[y]]);
}
for(int i=n;i>=2;i--){//倒扫一遍
if(a[i].v!=a[t[y]].v?a[i].v<a[t[y]].v:a[i].sit>a[t[y]].sit)
swap(a[i],a[t[y]]);
}
for(int i=1;i<=n;i++)//改位置
t[a[i].sit]=i;
}else{
cin>>y;
cout<<t[y]<<endl;
}
}
return 0;
}