比赛 |
CSP2023-J模拟赛 |
评测结果 |
AAAAAAAAAAWWWAAAAAAA |
题目名称 |
排列变换 |
最终得分 |
85 |
用户昵称 |
darkMoon |
运行时间 |
0.631 s |
代码语言 |
C++ |
内存使用 |
18.13 MiB |
提交时间 |
2023-10-18 19:05:56 |
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
#define mp make_pair
#define fi first
#define se second
using namespace std;
auto read = [](){
int x;
scanf("%lld", &x);
return x;
};
const int N = 1e6 + 5;
int n, a[N], ma, now, pos, e[N], jia[N], jian[N];
set<pair<int, int> > s;
signed main(){
freopen("permutrans.in", "r", stdin);
freopen("permutrans.out", "w", stdout);
n = read();
for(int i = 1; i <= n; i ++){
a[i] = read();
if(a[i] >= i)
now ++;
if(a[i] != n)
jia[n - i + 1] ++;
int t = a[i] - i + 1;
if(t < n - i + 1 && t > 0)
jian[t] ++;
t = n - i + 1 + a[i];
if(t < n)
jian[t] ++;
}
for(int i = 1; i < n; i ++){
now += jia[i] - jian[i];
// printf("***%lld %lld %lld\n", now, jia[i], jian[i]);
if(now > ma)
ma = now, pos = i;
}
// for(int i = 1; i <= n; i ++){
// a[i] = read();
// if(a[i] - i >= 0){
// s.insert(mp(a[i] - i, a[i]));
// now ++;
// }
// }
// ma = now, pos = 0;
// for(int i = 1; i < n; i ++){
// int t = n - i + 1;
// if(a[t] - t >= 0 && e[a[t]] == 0){
// s.erase(mp(a[t] - t, a[t]));
// now --;
// }
// now ++;
// s.insert(mp(a[t] - 1 + i, a[t]));
// while((*s.begin()).fi - i < 0){
// s.erase(s.begin());
// e[(*s.begin()).se] = 1;
// now --;
// }
// if(now > ma)
// ma = now, pos = i;
// }
printf("%lld %lld", ma, pos);
return 0;
}