#include <bits/stdc++.h>
using namespace std;
struct P{
int v;
int id;
P(){
v=id=0;
}
inline bool operator<(P b)const{
if(v!=b.v){
return v<b.v;
}
return id<b.id;
}
inline bool operator==(P b)const{
return (v==b.v && id==b.id);
}
}a[2*100000+10];
multiset<P> s;
int main(){
int n,q;
cin >> n >> q;
for(int i=1;i<=n;i++){
cin >> a[i].v;
a[i].id=i;
s.insert(a[i]);
}
for(int i=1;i<=q;i++){
int b;
cin >> b;
if(b==1){
int c,d;
cin >> c >> d;
s.erase(s.find(a[c]));
P f;
f.id=a[c].id;
f.v=d;
s.insert(f);
a[c].v=d;
}
if(b==2){
int x;
cin >> x;
int k=1;
for(auto j:s){
if(j==a[x])cout << k << '\n';
k++;
}
}
}
return 0;
}
问题主要出在b=2时的线性复杂度
希望各位大佬看看