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