比赛 国庆欢乐赛2 评测结果 ATTTTTTTATTTTTTTTTTT
题目名称 排列 最终得分 10
用户昵称 梦那边的美好TE 运行时间 35.967 s
代码语言 C++ 内存使用 3.49 MiB
提交时间 2025-10-04 11:48:13
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <map>
using namespace std;
map<__int128,bool>H;
int n,ans,a[21];
__int128 Hash(){
    __int128 k=0;
    for(int i=n;i>=1;i--){
        k=k*n+a[i];
    }
    return k;
}
void dfs(){
    if(H.count(Hash()));
    else{
        H[Hash()]=1,ans++;
    }
    ans%=1000000007;
    for(int i=1;i<=n;i++){
        for(int j=1;j<i;j++){
            if(a[j]>a[i]){
                swap(a[i],a[j]);
                dfs();
                swap(a[i],a[j]);
            }
        }
    }
    return;
}
int main(){
    freopen("changgao_perm.in","r",stdin);
    freopen("changgao_perm.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)scanf("%d",a+i);
    dfs();
    cout<<ans<<endl;
    return 0; 
}