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