4分awa
查看原帖
4分awa
684245
zhangyaiwei楼主2022/8/2 14:24
#include<bits/stdc++.h>
using namespace std;
int n,q,a[8111],index__[8111],index_[8111],op,x,v;//index_[x]=原本位置为x元素的位置,index__[x]=位置为x的元素的原位置 
void sort_(int i){//排序 
	while(a[i+1]<a[i]&&i+1<=n){//右移 
		index_[index__[i+1]]=i;
		index_[index__[i]]=i+1;
		swap(index__[i+1],index__[i]);
		swap(a[i+1],a[i]);
		i++;
	}
	while(a[i-1]>a[i]&&i-1>0){//左移 
		index_[index__[i]]=i-1;
		index_[index__[i-1]]=i;
		swap(index__[i-1],index__[i]);
		swap(a[i-1],a[i]);
		i--;
	}
}
int main(){
	cin>>n>>q;
	for(int i=1;i<=n;i++){//读入&初始化 
		cin>>a[i];
		index__[i]=i;
		index_[i]=i;
	}
	for(int i=1;i<=n;i++){//排序 
		sort_(index_[i]);
	}
	for(int i=0;i<q;i++){
		cin>>op;
		if(op==1){//如果为一就改变顺序 
			cin>>x>>v;
			a[index_[x]]=v;
			sort_(index_[i]);
		}
		else if(op==2){//为2就取 
			cin>>x;
			cout<<index_[x]<<endl;
		}
	}
}

谜之RE

2022/8/2 14:24
加载中...