求助 这题能过吗
查看原帖
求助 这题能过吗
593913
GENIUSplus楼主2021/11/2 22:18
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<iomanip>
using namespace std;
#define MAX 8001
int a[MAX],b[MAX],c[MAX];
int n,q;
int main()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		b[i]=i;
		c[i]=i;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j>=2;j--)
		{
			if(a[j]<a[j-1])
			{
				swap(b[c[j]],b[c[j-1]]);
				swap(c[j],c[j-1]);
				swap(a[j],a[j-1]);
			}
			if(a[j]==a[j-1]&&c[j-1]>c[j])
			{
				swap(b[c[j]],b[c[j-1]]);
				swap(c[j],c[j-1]);
			}
		}
	}
	for(int i=1;i<=q;i++)
	{
		int w;
		cin>>w;
		if(w==1)
		{
			int x1,v;
			cin>>x1>>v;
			a[b[x1]]=v;
			for(int j=b[x1];j<n;j++)
			{
				if(a[j]>a[j+1])
				{
					swap(a[j],a[j+1]);
					swap(b[c[j]],b[c[j+1]]);
					swap(c[j],c[j+1]);
				}
				if(a[j]==a[j+1]&&c[j+1]<c[j])
				{
					swap(b[c[j]],b[c[j+1]]);
					swap(c[j],c[j+1]);
				}
			}
			for(int j=b[x1];j>1;j--)
			{
				if(a[j]<a[j-1])
			    {
				    swap(b[c[j]],b[c[j-1]]);
				    swap(c[j],c[j-1]);
				    swap(a[j],a[j-1]);
			    }
		      	if(a[j]==a[j-1]&&c[j-1]>c[j])
			    {
				    swap(b[c[j]],b[c[j-1]]);
				    swap(c[j],c[j-1]);
			    }
			}
		}
		else
		{
			int x2;
			cin>>x2;
			cout<<b[x2]<<"\n";
		}
	}
	return 0;
}
2021/11/2 22:18
加载中...