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