萌新求助!68pts
查看原帖
萌新求助!68pts
383601
shijihong楼主2021/10/26 17:23
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct node{int w,id;};
bool cmp1(node x,node y){
	if(x.w!=y.w) return x.w<y.w;
	return x.id<y.id;
}
node a[8005];
int ids[8005];
int main(){
	int n,q;
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>a[i].w;
		a[i].id=i;
	}
	sort(a+1,a+n+1,cmp1);
	for(int i=1;i<=n;i++) ids[a[i].id]=i;
	for(int i=1;i<=q;i++){
		int opt;
		cin>>opt;
		if(opt==1){
		    memset(ids,0,sizeof(ids));
			int x,w,dx;
			cin>>x>>w;
			for(int j=1;j<=n;j++) if(a[j].id==x){
				a[j].w=w;
				dx=j;
				break;
			}
			int cnt=dx+1;
			while(cnt<=n and a[cnt].w<a[cnt-1].w or (a[cnt].w==a[cnt-1].w and a[cnt].id<a[cnt-1].id)){
				swap(a[cnt-1],a[cnt]);
				cnt++;
			}
			cnt=dx-1;
			while(cnt>=1 and a[cnt].w>a[cnt+1].w or (a[cnt].w==a[cnt+1].w and a[cnt].id>a[cnt-1].id)){
				swap(a[cnt+1],a[cnt]);
				cnt--;
			}
			for(int j=1;j<=n;j++) ids[a[j].id]=j;
		}
		else if(opt==2){
			int index;
			cin>>index;
			cout<<ids[index]<<endl;
		}
	}
	return 0; 
} 
2021/10/26 17:23
加载中...