正常的快读快些 O(q∗nlogn)都过了
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
struct node{
int ma,shu;
}a[maxn];
inline int read(){
int x=0,f=1;char ch=getchar();
while(!isdigit(ch))f=ch!='-',ch=getchar();
while(isdigit(ch))x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return f?x:-x;
}
inline void write(int x)
{
if(x<0)
putchar('-'),x=-x;
if(x==0)
{
putchar('0');
return ;
}
if(x>9)write(x/10);
putchar(x%10+'0');
return;
}
bool cmp(node x,node y){
if(x.shu!=y.shu)return x.shu<y.shu;
return x.ma<y.ma;
}
int main(){
int n,q;
n=read();q=read();
for(int i=1;i<=n;i++){
a[i].shu=read();
a[i].ma=i;
}
stable_sort(a+1,a+n+1,cmp);
int opt,x,v;
while(q--){
opt=read();
if(opt==1){
x=read();v=read();
for(int i=1;i<=n;i++){
if(x==a[i].ma){
a[i].shu=v;
break;
}
}
stable_sort(a+1,a+n+1,cmp);
}
if(opt==2){
v=read();
for(int i=1;i<=n;i++){
if(a[i].ma==v){
write(i);
putchar(10);
break;
}
}
}
}
return 0;
}