AC
2025-07-09 16:48:21
发布于:广东
66阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
struct node{
int id,num;
}a[8010];
int n,q;
int b[8010];
bool cmp(node a,node b){
if(a.num==b.num){
return a.id<b.id;
}else{
return a.num<b.num;
}
}
void change(int pos){
while(pos>1){
if(a[pos].num>a[pos-1].num){
break;
}else if(a[pos].num==a[pos-1].num&&a[pos].id>a[pos-1].id){
break;
}
swap(a[pos],a[pos-1]);
b[a[pos].id]=pos;
b[a[pos-1].id]=pos-1;
pos--;
}
while(pos<n){
if(a[pos].num<a[pos+1].num){
break;
}else if(a[pos].num==a[pos+1].num&&a[pos].id<a[pos+1].id){
break;
}
swap(a[pos],a[pos+1]);
b[a[pos].id]=pos;
b[a[pos+1].id]=pos+1;
pos++;
}
}
int main(){
//freopen("","r",stdin);
//freopen("","w",stdout);
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i].num;
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
b[a[i].id]=i;
}
int op,u,v;
while(q--){
cin>>op;
if(op==1){
cin>>u>>v;
a[b[u]].num=v;
change(b[u]);
// for(int i=1;i<=n;i++){
// if(a[i].id==u){
// a[i].num=v;
// break;
// }
// }
//sort(a+1,a+n+1,cmp);
}else{
cin>>u;
// for(int i=1;i<=n;i++){
// if(a[i].id==u){
// cin>>n;
// break;
// }
// }
cout<<b[u]<<endl;
}
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
这里空空如也
有帮助,赞一个