比赛 国庆欢乐赛2 评测结果 ATTTTTTTATTTTTTTTTTT
题目名称 排列 最终得分 10
用户昵称 zhyn 运行时间 35.970 s
代码语言 C++ 内存使用 3.44 MiB
提交时间 2025-10-04 11:23:16
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define ll long long
#define maxn 100005


int n;
int num[50];

int ans=0;

const int mod=1e9+7;
int vis[1000005][50];

void wrt(){
    int cnt=ans;
    for(int i=1;i<=ans;i++){
        for(int j=1;j<=n;j++){
            if(num[j]!=vis[i][j]){
                cnt--;
                break;
            }
        }
    }
    if(!cnt){
        ans++;
        for(int i=1;i<=n;i++){
            vis[ans][i]=num[i];
        }
    }
}

void dfs(){
    for(int i=1;i<=n;i++){
        for(int j=i+1;j<=n;j++){
            if(num[i]>num[j]){
                swap(num[i],num[j]);
                wrt();
                if(ans==mod){
                    ans=0;
                }
                dfs();
                swap(num[i],num[j]);
            }
        }
    } 
}

int main(){
    
    freopen("changgao_perm.in","r",stdin);
    freopen("changgao_perm.out","w",stdout);
    
    
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    cin>>n;
    ans=1;
    
    for(int i=1;i<=n;i++){
        cin>>num[i];
        vis[1][i]=num[i];
    }
    
    dfs();
    cout<<ans;
    
    
    return 0;
}