답안 #93487

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
93487 2019-01-08T18:47:22 Z zubec 바이오칩 (IZhO12_biochips) C++14
0 / 100
2 ms 376 KB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;


ll dp[25][(1<<20)+5];

pair<int, int> a[25];

int n;

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    //freopen("beautiful.in", "r", stdin);freopen("beautiful.out", "w", stdout);

    cin >> n;
    for (int i = 0; i < n; i++){
        int x;
        cin >> x;
        int ncp = x;
        while(ncp){
            a[i].first += (ncp % 2 == 1);
            ncp /= 2;
        }
        ncp = x;
        while(ncp){
            a[i].second += (ncp % 3 == 1);
            ncp /= 3;
        }
        dp[i][(1<<i)] = 1;
        //cout << i << ' ' << a[i].first << ' ' << a[i].second << endl;
    }
    for (int mask = 1; mask < (1<<n); mask++){
        for (int i = 0; i < n; i++){
            if (!(mask & (1<<i)))
                continue;
            for (int j = 0; j < n; j++){
                if (mask & (1<<j))
                    continue;
                if (!(a[i].first == a[j].first || a[i].second == a[j].second))
                    continue;
                dp[j][mask|(1<<j)] += dp[i][mask];
            }
        }
    }
    ll ans = 0;
    for (int i = 0; i < n; i++)
        ans += dp[i][(1<<n)-1];

    cout << ans;

}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 376 KB Output isn't correct
2 Halted 0 ms 0 KB -