Why?
查看原帖
Why?
1175242
Zxx20120715楼主2024/7/15 20:42
#include<bits/stdc++.h>
using namespace std;
const int xx=2e5+5;
array<int,2>b[xx];
int ans[xx];
int a[xx],n,q;
int main(){
	cin>>n>>q;
	for(int i=1;i<=n;i++) cin>>a[i],b[i]={a[i],i};
	sort(b+1,b+n+1);
	for(int j=1;j<=n;j++)
		ans[b[j][1]]=j;
	while(q--){
		int op;
		cin>>op;
		if(op==1){
			int x,v;
			cin>>x>>v;
			a[x]=v,b[ans[x]]={a[x],x};
			for(int j=ans[x];j>=2;j--)	
				if(b[j]<b[j-1]) swap(b[j],b[j-1]);
			for(int j=ans[x];j<n;j++)	
				if(b[j+1]<b[j]) swap(b[j+1],b[j]);
			for(int j=1;j<=n;j++)	
				ans[b[j][1]]=j;
		}
		else{
			int x;
			cin>x;
			cout<<ans[x]<<"\n";	
		}
	}
	return 0;
}

语言用了 C++11,CE 了,不知道为什么。。。

2024/7/15 20:42
加载中...