4pts求助!!!
查看原帖
4pts求助!!!
749219
Eva_91418楼主2024/10/2 10:16
#include<bits/stdc++.h>
using namespace std;

const int N=200000+5;
int n,q;
struct data{
	int p,v;
}a[N];
int pos[N];
int main()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i].v;
		a[i].p=i;
	}
	for (int i = 1; i <= n; i++)
    	for (int j = i; j >= 2; j--)
	        if (a[j].v < a[j-1].v) {
	            swap(a[j],a[j-1]);
	    	}
	for(int i=1;i<=n;i++)
	{
		pos[i]=a[i].p;
	}
	while(q--)
	{
		int op,xx;
		cin>>op>>xx;
		if(op==2)cout<<pos[xx]<<endl;
		else{
			int vv;
			cin>>vv;
			int k=1;
			while(a[k].p!=xx)k++;
			a[k].v=vv;
			while(k>1&&a[k].v<a[k-1].v||a[k].v==a[k-1].v&&a[k].p<a[k-1].p)
			{
				swap(pos[a[k].p],pos[a[k-1].p]);
				swap(a[k],a[k-1]);
				k--;
			}
			while(k<n&&a[k].v>a[k+1].v||a[k].v==a[k+1].v&&a[k].p<a[k+1].p)
			{
				swap(pos[a[k].p],pos[a[k+1].p]);
				swap(a[k],a[k+1]);
				k++;
			}
			
		}
	}
	return 0;
}
2024/10/2 10:16
加载中...