RE 16分求助
查看原帖
RE 16分求助
945751
hch2023楼主2023/10/19 18:51

大佬,救命!!!RE

#include<bits/stdc++.h>
using namespace std;	
long long n,Q;
struct Node{
	long long a;
	long long b;
	long long z;
}q[100001];
void f(){
	for(long long i=1;i<=n;i++){
		q[i].b=q[i].a;
		q[i].z=i;
	}
	for(long long i=1;i<=n;i++){
		for(long long j=i;j>=2;j--){
			if(q[j].b<q[j-1].b){
				swap(q[j-1].b,q[j].b);
				swap(q[j-1].z,q[j].z);
			}
		}
	}
}
void f1(long long u,long long x){
	for(long long i=1;i<=n;i++){
		if(u==q[i].z){
			q[i].b=x;
			for(long long j=i;q[j].b<q[j-1].b;j--){
				swap(q[j].b,q[j-1].b);
				swap(q[j].z,q[j-1].z);
			}
			for(long long j=i;q[j].b>=q[j+1].b;j++){
				swap(q[j].b,q[j+1].b);
				swap(q[j].z,q[j+1].z);
			}
			break;
		}
	}
}
long long f2(long long x){
	for(long long i=1;i<=n;i++){
		if(x==q[i].z)return i;
	}
}
int main(){
	cin>>n>>Q;
	for(long long i=1;i<=n;i++){
		cin>>q[i].a;
		q[i].z=i;
	}
	f();
	while(Q--){
		long long s,u,x;
		scanf("%lld",&s);
		if(s==1){
			scanf("%lld%lld",&u,&x);
			q[u].a=x;
			f1(u,x);
		}
		if(s==2){
			scanf("%lld",&u);
			long long jp=f2(u);
			printf("%lld\n",jp);
		}
	}
}
/*
3 4
3 2 1
2 3
1 3 2
2 2
2 3
10 10
584395437 584395437 797929861 522203818 381935688 862314366 522203818 797929861 835048540 589968305
1 2 991541492
1 4 883341961
1 9 584395437
2 2
1 2 797929861
1 2 280980536
2 4
1 9 471602987
1 4 584395437
1 8 379023047

*/
2023/10/19 18:51
加载中...