比赛 2025.12.13 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 梦那边的美好ME 运行时间 0.803 s
代码语言 C++ 内存使用 7.62 MiB
提交时间 2025-12-13 09:59:29
显示代码纯文本
#include<iostream>
using namespace std;
#define ll long long

ll n;
ll p[1100000],d[1100000];
ll s,maxn,ans;
ll r,maxm,rr,l2,r2;

int main(){
    freopen("permutrans.in","r",stdin);
    freopen("permutrans.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    cin>>n;
    for(int i=0;i<n;i++) cin>>p[i];
    for(int i=0;i<n;i++){
        r=p[i]-1-i;
        maxm=n-1-i;
        rr=min(r,maxm);
        if(rr>=0){
            d[0]++;
            d[rr+1]--;
        }
        l2=n-i;
        r2=p[i]-1-i+n;
        if(l2<=r2 && l2<n){
            int rr=min(r2,n-1);
            d[l2]++;
            d[rr+1]--;
        }
    }
    for(int i=0;i<n;i++){
        s+=d[i];
        if(s>maxn){
            maxn=s;
            ans=i;
        }
    }
    cout<<maxn<<" "<<ans<<endl;
    return 0;
}