8分,求救
查看原帖
8分,求救
1106396
Cong256楼主2024/8/3 12:59

8分改了80分钟了,实在不行了

#include<bits/stdc++.h> 
using namespace std;
int n,T,t[10005];
struct node{
	int v,sit;//v是数值,sit是位置
}a[10005];
bool cmp(node x,node y){//结构体比较
	if(x.v!=y.v) return x.v<y.v;
	return x.sit<y.sit;
}
int main(){
	cin>>n>>T;
	for(int i=1;i<=n;i++){
		cin>>a[i].v;
		a[i].sit=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
		t[a[i].sit]=i;//用桶判断位置
	while(T--){
		int x,y,z;
		cin>>x;
		if(x==1){
			cin>>y>>z;
			a[t[y]].v=z;//改数值
			for(int i=2;i<=n;i++){//正扫一遍
				if(cmp(a[i],a[t[y]]))
					swap(a[i],a[t[y]]);
			}
			for(int i=n;i>=2;i--){//倒扫一遍
				if(a[i].v!=a[t[y]].v?a[i].v<a[t[y]].v:a[i].sit>a[t[y]].sit)
					swap(a[i],a[t[y]]);
			}
			for(int i=1;i<=n;i++)//改位置
				t[a[i].sit]=i;
		}else{
			cin>>y;
			cout<<t[y]<<endl;
		}
	}
	return 0;
}
2024/8/3 12:59
加载中...