64分超时求助
查看原帖
64分超时求助
610393
murder_drones楼主2022/7/14 21:14
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;

int a[8003],b[8003],arank[8003];//arank[i]指在a[i]同样的值中排第几。 
int q,n,cnt,cz,x,v;

int main()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		b[i]=a[i];
	}
	sort(b+1,b+n+1);
	for(int i=1;i<=n;i++)
	{
		int tcnt=0;
		for(int j=1;j<=n;j++)
		{
			if(a[i]==a[j]){
				tcnt++;
				arank[j]=tcnt;
			}
		}
	}
	for(int i=1;i<=q;i++)
	{
		scanf("%d",&cz);
		if(cz==1){
			scanf("%d %d",&x,&v);
			int tmp=a[x];
			a[x]=v;
			int tcnt=0;
			for(int j=1;j<=n;j++)
			{
				if(a[j]==v){
					tcnt++;
					arank[j]=tcnt;
				}
			}
			tcnt=0;
			for(int j=1;j<=n;j++)
			{
				if(a[j]==tmp){
					tcnt++;
					arank[j]=tcnt;
				}
			}
			for(int i=1;i<=n;i++)
			{
				b[i]=a[i];
			}
			sort(b+1,b+n+1);
		}
		else{
			scanf("%d",&x);
			int tcnt=0;
			while(b[++tcnt]!=a[x]) ;
			cout<<tcnt-1+arank[x]<<endl;
		}
	}/*
	for(int i=1;i<=n;i++)
		cout<<a[i]<<' ';
	cout<<endl;
	for(int i=1;i<=n;i++)
		cout<<arank[i]<<' ';*/
	return 0;
}

求助

评测记录

2022/7/14 21:14
加载中...