记录编号 583626 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 Gravataryrtiop 是否通过 通过
代码语言 C++ 运行时间 0.647 s
提交时间 2023-10-19 20:18:18 内存使用 6.68 MiB
显示代码纯文本
#include <bits/stdc++.h>
#define pb emplace_back
#define fir first
#define sec second

using i64 = long long;
using pii = std::pair<int, int>;

constexpr int maxn = 1e6 + 5;
int n, a[maxn], sum[maxn];

int main() {
	freopen("permutrans.in", "r", stdin);
	freopen("permutrans.out", "w", stdout);
	scanf("%d", &n);
	int ans = 0, pos = 0;
	for(int i = 1;i <= n;++ i) {
		scanf("%d", &a[i]);
		if(a[i] >= i) {
			++ sum[0];
			-- sum[a[i] - i + 1];
			++ sum[n - i + 1];
			++ ans;
		} else {
			++ sum[n - i + 1];
			-- sum[n - i + a[i] + 1];
		}
	}
	for(int i = 1;i <= n;++ i)
		sum[i] += sum[i - 1];
	for(int i = 1;i <= n;++ i)
		if(sum[i] > ans) ans = sum[i], pos = i;
	printf("%d %d\n", ans, pos);
	return 0;
}