比赛 CSP2023-J模拟赛 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 mmy 运行时间 0.523 s
代码语言 C++ 内存使用 7.80 MiB
提交时间 2023-10-18 21:32:13
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n;
int p[1000005];
int b[1000005];
int a[1000005];
int ans,tmp;
int main(){
	freopen("permutrans.in","r",stdin);
	freopen("permutrans.out","w",stdout);
	std::ios::sync_with_stdio(0);
	cin>>n; 
	for(int i=1;i<=n;i++){
		cin>>p[i];
		if(p[i]<i){
			int l=1+n-i+1;
			int r=l+p[i]-1;
			b[l]++;
			b[r+1]--;
		}
		else{
			int tot=p[i];
			int r=1+p[i]-i;
			tot-=r;
			b[1]++;
			b[r+1]--;
			if(tot!=0){
				int l=r+n-p[i]+1;
				r=l+tot-1;
				b[l]++;
				b[r+1]--;
			}
		}
	}
	for(int i=1;i<=n;i++){
		a[i]=b[i]+a[i-1];
		if(a[i]>ans){
			ans=a[i];
			tmp=i-1;
		}
	}
	cout<<ans<<" "<<tmp;
	return 0;
}