Submission #867651

#TimeUsernameProblemLanguageResultExecution timeMemory
867651sleepntsheepBeautiful row (IZhO12_beauty)C++17
100 / 100
1075 ms164764 KiB
#include <iostream> #include <vector> #include <algorithm> #include <deque> #include <set> #include <utility> #include <array> using namespace std; #define ALL(x) x.begin(), x.end() #define ShinLena cin.tie(nullptr)->sync_with_stdio(false); using ll = long long; #define N 20 int n, a[N], b3[N]; ll ans, dp[1<<N][N]; inline int beautiful(int i, int j) { return (__builtin_popcount(a[i]) == __builtin_popcount(a[j])) || b3[i] == b3[j]; } int main() { ShinLena; cin >> n; for (int i = 0; i < n; ++i) { cin >> a[i]; for (int x = a[i]; x; b3[i] += (x % 3) == 1, x /= 3); dp[0][i] = 1; } for (int k = 0; k < (1 << n); ++k) { for (int j = 0; j < n; ++j) { if (!(k&(1<<j))) continue; for (int l = 0; l < n; ++l) { if (k & (1 << l)) dp[k][j] += beautiful(j, l) * dp[k&~(1<<j)][l]; } } } for (int i = 0; i < n; ++i) ans += dp[(1<<n)-1][i]; cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...