Submission #946545

#TimeUsernameProblemLanguageResultExecution timeMemory
946545sondos225Beautiful row (IZhO12_beauty)C++17
0 / 100
99 ms262144 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define fast ios_base::sync_with_stdio(0);cin.tie(NULL);cout.tie(NULL); #define pb push_back #define yes "YES" #define no "NO" #define bigg INT_MAX #define debug(x) cout<<(#x)<<" = " <<x<<endl; #define all(x) x.begin(),x.end() #define sz size() #define nn '\n' #define mms(x,y) memset(x,y,sizeof(x)) #define forr(i,j,n) for (int i=j; i<n; i++) #define forn(i,j,n) for (int i=j; i>n; i--) #define fi first #define se second #define la "LA" #define cinn(x,y) for(int i=0; i<y; i++) cin>>x[i]; #define pii pair<int,int> map<int,int> m2; map<int,int> m3; int n; int dp[21][(1<<21)]; int dfs(int x, int mask) { if (mask==((1<<n)-1)) return 1; if (dp[x][mask]!=-1) return dp[x][mask]; int c=0; forr(i,0,n) { if (m2[x]==m2[i] || m3[x]==m3[i]){ if (!((1<<i)&mask)) { mask|=(1<<i); c+=dfs(i,mask); mask^=(1<<i); } } } return dp[x][mask]=c; } signed main() { // #ifndef LOCAL // freopen("lifeguards.in","r",stdin); // freopen("lifeguards.out","w", stdout); // #endif fast // int n; cin>>n; int a[n]; mms(dp,-1); forr(i,0,n) { cin>>a[i]; int x=a[i]; while(x>0) { if (x%2==1) m2[i]++; x/=2; } x=a[i]; while(x>0) { if (x%3==1) m3[i]++; x/=3; } } int ans=0; forr(i,0,n) { ans+=dfs(i,(1<<i)); } cout<<ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...