比赛 2025.12.13 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 淮淮清子 运行时间 0.793 s
代码语言 C++ 内存使用 5.63 MiB
提交时间 2025-12-13 08:56:28
显示代码纯文本
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 1e6 + 10;
int p[MAXN], d[MAXN];

int main(){
	freopen("permutrans.in", "r", stdin);
	freopen("permutrans.out", "w", stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);

    int n;
    cin >> n;
    for(int k = 1;k <= n;++ k) cin >> p[k];

    for(int k = 1;k <= n;++ k){
        int m = n - k;
        int l = 0, r = min(p[k] - k, m);
        if(l <= r){
        	d[l] ++, d[r + 1] --;
		}
        l = m + 1, r = min(p[k] + n - k, n - 1);
        if(l <= r){
        	d[l] ++, d[r + 1] --;
		}
    }
    int cnt = 0, mx = -1, mnx = 0;
    for(int x = 0;x < n;++ x){
        cnt += d[x];
        if(cnt > mx || (cnt == mx && x < mnx)){
        	mx = cnt, mnx = x;
		}
    }
    cout << mx << ' ' << mnx << '\n';
    return 0;
}