J-组没过的菜狗求助——悬关
查看原帖
J-组没过的菜狗求助——悬关
1122479
xxs12345楼主2024/5/23 15:02
#include<bits/stdc++.h>
using namespace std;
long long n,q,o[100001],jl;
long long k[100001],x,last;
long long cf[100001]; 
long long a;
int main()
{
	std::cin.tie(0);
	std::cout.tie(0);
	cin>>n>>q;
	for(int i=1;i<=n;i++){
		cin>>o[i];
		k[o[i]]=i;
	}
	for(int i=1;i<=n;i++){
		if(k[i]<last) jl++,x++;
		else{
			jl=jl+k[i]-x;
			last=k[i];
			x++;
		}			
	}
	cout<<jl<<" ";
	for(int i=1;i<=q;i++){
		jl=0,x=0,last=0;
		cin>>a;
		k[o[a]]=0;
		for(int j=a;j<=n;j++)k[o[j]]--;
		    
		for(int j=1;j<=n;j++){
			if(k[j]>=1){
				if(k[j]<last) jl++,x++;
				else{
					jl=jl+k[j]-x;
					last=k[j];
					x++;
				}
			}			
		}
		cout<<jl<<" ";
	}	
	return 0;
}

64分,我赛时想了一个极其离谱的o(n)判断一次下电梯的操作(玛量超级短):

for(int i=1;i<=n;i++){
		if(k[i]<last) jl++,x++;
		else{
			jl=jl+k[i]-x;
			last=k[i];
			x++;
		}			
	}
2024/5/23 15:02
加载中...