제출 #1176565

#제출 시각아이디문제언어결과실행 시간메모리
1176565coco2311아름다운 순열 (IZhO12_beauty)C++17
0 / 100
147 ms436 KiB
#include <iostream>
#include <vector>
using namespace std;
#define int long long
#define f first
#define s second
#define pii pair<long long,long long>

pii arr[10];
vector<int> adj[10];
bool vis[10];
int cnt;

void dfs(int n,int e){
    if(vis[n])return;
    if(e==1){
        cnt++;
        return;
    }
    vis[n]=true;
    for(int i: adj[n]){
        dfs(i,e-1);
    }
    vis[n]=false;
}

signed main(){
    ios::sync_with_stdio(false);cin.tie();cout.tie();
//    freopen("input.in","r",stdin);
    int N;cin>>N;
    int nb,u,r;
    for(int i=0;i<N;i++){
        cin>>nb;
        u=nb;
        arr[i].f=0;
        while(u!=0){
            r=u%2;
            if(r==1){
                arr[i].f++;
            }
            u-=r;
            u/=2;
        }
        u=nb;
        arr[i].s=0;
        while(u!=0){
            r=u%3;
            if(r==1){
                arr[i].s++;
            }
            u-=r;
            u/=3;
        }
    }
    for(int i=0;i<N;i++){
        for(int j=0;j<N;j++){
            if(j==i)continue;
            if(arr[i].f==arr[j].f || /*arr[i].f==arr[j].s || arr[i].s==arr[j].f ||*/ arr[i].s==arr[j].s){
                adj[i].push_back(j);
            }
        }
    }
    cnt=0;
    for(int i=0;i<N;i++){
        vis[i]=false;
    }
    for(int i=0;i<N;i++){
        dfs(i,N);
    }
    cout<<cnt;
}
#Verdict Execution timeMemoryGrader output
Fetching results...