64求调,真的求求各位dalao帮一下吧,尽量关注
查看原帖
64求调,真的求求各位dalao帮一下吧,尽量关注
1303967
lizimu0718楼主2024/10/23 21:23
#include<bits/stdc++.h>
using namespace std;
int n,q;
int a[10000][5];
int fi[10000];
int main()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i][1];
		a[i][0]=i;
	}
	for (int i = 1; i <= n; i++)
	{
		for (int j = i; j >= 2; j--)
			if (a[j][1] < a[j-1][1]) 
			{
				swap(a[j][1],a[j-1][1]);
				swap(a[j][0],a[j-1][0]);
			}
	}
	for(int i=1;i<=n;i++)
	{
		fi[a[i][0]]=i;  //通过原位找现在的位置
	}
	while(q--)
	{
		int v;
		cin>>v;
		if(v==1)
		{
			int x,y;
			cin>>x>>y;
			a[fi[x]][1]=y;
			if(y<a[fi[x]-1][1])
			{
				for(int i=fi[x];i>1;i--)
				{
					if(a[i][1]<a[i-1][1]||(a[i][1]==a[i-1][1]&&a[i][0]<a[i-1][0]))
					{
						swap(a[i][1],a[i-1][1]);
						swap(a[i][0],a[i-1][0]);
					}
					else break;
				}
			}
			else if(y>a[fi[x]+1][1])
			{
				for(int i=fi[x];i<n;i++)
				{
					if(a[i][1]>a[i+1][1]||(a[i][1]==a[i+1][1]&&a[i][0]>a[i+1][0]))
					{
						swap(a[i][0],a[i+1][0]);
						swap(a[i][1],a[i+1][1]);
					}
					else break;
				}
			}
			for(int i=1;i<=n;i++)
			{
				fi[a[i][0]]=i;  //通过原位找现在的位置
			}
		}
		else
		{
			int x;
			cin>>x;
			cout<<fi[x]<<endl;
		}
	}
	return 0;
}
2024/10/23 21:23
加载中...