| 比赛 |
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;
}