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