比赛 CSP2023-J模拟赛 评测结果 AAAAAAAAAAAAAAAAAAAA
题目名称 排列变换 最终得分 100
用户昵称 usr10086 运行时间 0.569 s
代码语言 C++ 内存使用 7.73 MiB
提交时间 2023-10-18 20:03:59
显示代码纯文本
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. ifstream fin("permutrans.in");
  6. ofstream fout("permutrans.out");
  7. #define cin fin
  8. #define cout fout
  9.  
  10. const int N = 1e6 + 10;
  11.  
  12. int n, p[N];
  13. int add[N], sub[N];
  14.  
  15. int main()
  16. {
  17. cin >> n;
  18. for (int i = 1; i <= n; i++)
  19. {
  20. cin >> p[i];
  21. if (p[i] >= i)
  22. {
  23. add[0]++;
  24. if (p[i] != n) sub[p[i]-i]++, add[n-i+1]++;
  25. }
  26. else add[n-i+1]++, sub[n-i+p[i]]++;
  27. }
  28. int cnt = 0, mxcnt = 0, maxi = 0;
  29. for (int i = 0; i < n; i++)
  30. {
  31. cnt += add[i];
  32. if (cnt > mxcnt) mxcnt = cnt, maxi = i;
  33. cnt -= sub[i];
  34. }
  35. cout << mxcnt << ' ' << maxi;
  36. }
  37.