| 比赛 |
2026.8.26 |
评测结果 |
AAAATTTTWWWWWWWTTTTTTTTTT |
| 题目名称 |
sort |
最终得分 |
16 |
| 用户昵称 |
LikableP |
运行时间 |
4.360 s |
| 代码语言 |
C++ |
内存使用 |
7.54 MiB |
| 提交时间 |
2026-08-26 12:38:36 |
显示代码纯文本
#include <cstdio>
#include <cstring>
#include <vector>
#include <map>
long long n;
std::vector<long long> a, cpy;
bool special = true;
std::map<std::vector<long long>, bool> map;
int errorid;
void BubbleSort() {
int stepid = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n - i; ++j) {
++stepid;
if ((cpy[j] > cpy[j + 1] && stepid != errorid) ||
(cpy[j] < cpy[j + 1] && stepid == errorid)) {
cpy[j] ^= cpy[j + 1] ^= cpy[j] ^= cpy[j + 1];
}
}
}
map[cpy] = 1;
}
void Brute() {
for (int _ = 1; _ <= n * n - n * (n + 1) / 2 ; ++_) {
cpy = a;
errorid++;
BubbleSort();
}
}
int main() {
freopen("sorttros.in", "r", stdin);
freopen("sorttros.out", "w", stdout);
scanf("%lld", &n);
a.resize(n + 1);
for (long long i = 1; i <= n; ++i) {
scanf("%lld", &a[i]);
if (a[i] != n - i + 1) special = false;
}
if (special) {
printf("%lld\n", n * (n + 1) / 2 - n + 1);
return 0;
}
Brute();
printf("%llu\n", map.size());
return 0;
}