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