Submission #339841

#TimeUsernameProblemLanguageResultExecution timeMemory
339841nandonathanielBeautiful row (IZhO12_beauty)C++14
0 / 100
3061 ms164668 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN=20; int n; long long dp[1<<MAXN][MAXN]; int a[MAXN]; int binary(int x){ return __builtin_popcount(x); } int ternary(int x){ int ret=0; while(x>0){ if(x%3==1)ret++; x/=3; } return ret; } int main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin >> n; for(int i=0;i<n;i++){ cin >> a[i]; dp[1<<i][i]=1; } for(int i=1;i<(1<<n);i++){ for(int j=0;j<n;j++){ if((1<<j) & i){ for(int k=0;k<n;k++){ if(!((1<<k) & i)){ if(binary(a[k])==binary(a[j]) || ternary(a[k])==ternary(a[j]))dp[i+(1<<k)][k]+=dp[i][j]; } } } } } long long ans=0; for(int i=0;i<n;i++)ans+=dp[(1<<n)-1][i]; cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...