在线等(玄关求条)
查看原帖
在线等(玄关求条)
1024143
yangjicheng2011楼主2024/10/25 19:59
#include<bits/stdc++.h>
using namespace std;
struct node{
	int id,val;
}a[200001],b[200001];
int q;
int yu[200001];
bool cmp(const node &x,const node &y){
	if(x.val==y.val){
		return x.id<y.id;
	}
	return x.val<y.val;
}
int main(){
	int n;
	scanf("%d%d",&n,&q);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i].val);
		a[i].id=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++){
		yu[a[i].id]=i;
	}
	while(q--){
		int opt;
		scanf("%d",&opt);
		if(opt==1){
			int x,v;
			scanf("%d%d",&x,&v);
			for(int i=1;i<=n;i++){
				if(a[i].id==x){
					a[i].val=v;
					break;
				}
			}
			for(int i=2;i<=n;i++){
				if(a[i].val<a[i-1].val||(a[i].val==a[i-1].val&&a[i].id<a[i-1].id)){
					swap(a[i].val,a[i-1].val);
					swap(a[i].id,a[i-1].id);
				}
			}
	        for(int i=1;i<=n;i++){
		      yu[a[i].id]=i;
	        }			
	        //for(int i=1;i<=n;i++){
	        	//printf("%d %d\n",a[i].val,a[i].id);
			//}
		}
		else{
			int x;
			scanf("%d",&x);
			 printf("%d\n",yu[x]);
		}
	}
}
2024/10/25 19:59
加载中...