52分求调
查看原帖
52分求调
469496
享受Codingg楼主2023/9/10 14:27
#include <bits/stdc++.h>
using namespace std;
struct node{
	int v;
	int id;
}a[8005];
int n,q;
int wz[8008];
bool cmp(node g,node h){
	if (g.v!=h.v){
		return g.v<h.v;
	}else{
		return g.id<h.id;
	}
}
int main(){
	cin>>n>>q;
	for (int i=1;i<=n;i++){
		scanf ("%d",&a[i].v);
		a[i].id=i;
	}
	sort(a+1,a+1+n,cmp);
	for (int i=1;i<=n;i++){
		wz[a[i].id]=i;
	}
	while (q--){
		int op;
		scanf ("%d",&op);
		if (op==1){
			int x,va;
			scanf ("%d%d",&x,&va);
			a[wz[x]].v=va;
			if (a[wz[x]].v>=a[wz[x]+1].v){
				for (int i=wz[x];i<n;i++){
					if (a[i].v>a[i+1].v || (a[i].v==a[i+1].v && a[i].id>a[i+1].id)){
						swap(wz[a[i].id],wz[a[i+1].id]);
						swap(a[i].v,a[i+1].v);
						swap(a[i].id,a[i+1].id);
					}
				}
			}else if (a[wz[x]].v<=a[wz[x]-1].v ){
				for (int i=wz[x];i>1;i--){
					if (a[i].v<a[i-1].v || (a[i].v==a[i-1].v && a[i].id<a[i-1].id)){
						swap(wz[a[i].id],wz[a[i-1].id]);
						swap(a[i].v,a[i-1].v);
						swap(a[i].id,a[i-1].id);
					}
				}
			}
		}else{
			int x;
			scanf ("%d",&x);
			printf ("%d\n",wz[x]);
		}
	}
    return 0;
}
2023/9/10 14:27
加载中...