Submission #795004

# Submission time Handle Problem Language Result Execution time Memory
795004 2023-07-27T05:08:57 Z Blagoj Beautiful row (IZhO12_beauty) C++17
0 / 100
1 ms 332 KB
#include <bits/stdc++.h>

#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast,unroll-loops")

using namespace std;

#define endl '\n'
#define ll long long
#define all(x) x.begin(), x.end()

int n, a[22], base2[22], base3[22];

int Base3(int x) {
    int ans = 0;
    while (x >= 1) {
        ans += (x % 3 == 1);
        x /= 3;
    }
    return ans;
}

int dp[1 << 20][20];

int solve(int mask, int last) {
    if (mask == (1 << n) - 1) return dp[mask][last] = 1;
    if (dp[mask][last]) return dp[mask][last];
    int ans = 0;
    for (int i = 0; i < n; i++) {
        if (!(mask & (1 << i)) && (base2[i] == base2[last] || base3[i] == base3[last])) {
            ans += solve(mask | (1 << i), i);
        }
    }
    return dp[mask][last] = ans;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        base2[i] = __builtin_popcount(a[i]);
        base3[i] = Base3(a[i]);
    }
    cout << solve(0, 0);
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 328 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Incorrect 0 ms 212 KB Output isn't correct
6 Halted 0 ms 0 KB -