比赛 2025.12.13 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 梦那边的美好TE 运行时间 0.603 s
代码语言 C++ 内存使用 4.74 MiB
提交时间 2025-12-13 09:29:31
显示代码纯文本
#include <iostream>
#include <cstdio>
using namespace std;
const int N=1e6+10;
int n,c[N],x;
inline void add(int l,int r){
	if(l>r)return;
	c[l]++,c[r+1]--;
}
inline void read(int &x){
	x=0;int f=1;char ch=getchar();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
	while(ch>='0'&&ch<='9')x=(x<<3)+(x<<1)+ch-'0',ch=getchar();
	x*=f;return;
} 
int main(){
	freopen("permutrans.in","r",stdin);
	freopen("permutrans.out","w",stdout);
	read(n);
	for(int i=1;i<=n;i++){
		read(x);
		if(i<=x)add(0,x-i),add(n-i+1,n-1);
		else add(n-i+1,n+x-i);
	}
	for(int i=1;i<=n;i++)c[i]+=c[i-1];
	int ans=0;
	for(int i=1;i<n;i++){
		if(c[i]>c[ans])ans=i;
	}
	printf("%d %d\n",c[ans],ans);
	return 0;
}