Submission #673821

# Submission time Handle Problem Language Result Execution time Memory
673821 2022-12-22T05:56:10 Z smartmonky Beautiful row (IZhO12_beauty) C++14
100 / 100
751 ms 172740 KB
#include <bits/stdc++.h>
 
#define ff first
#define ss second
#define pb push_back
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
 
using namespace std;
 
//void fp(string name){freopen((name+".in").c_str(),"r",stdin); freopen((name+".out").c_str(),"w",stdout);}
const int N =  (1 << 20) + 1;
long long dp[N][21];
int a[22], bit[22], ter[22];
long long ful = 0;

int getbits(int x){
	int res = 0;
	while(x > 0){
		res += x % 2;
		x >>= 1;
	}
	return res;
}
int getter(int x){
	int res = 0;
	while(x > 0){
		res += (x % 3 == 1);
		x /= 3;
	}
	return res;
}
 
main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int n;
	cin >> n;
	for(int i = 0; i < n; i++){
		ful += (1 << i);
		cin >> a[i];
		bit[i] = getbits(a[i]);
		ter[i] = getter(a[i]);
		dp[(1 << i)][i] = 1;
	}
	for(int i = 0; i < (1 << (n)); i++){
		for(int j = 0; j < n; j++){
			if(dp[i][j] == 0 ||  (i  & (1 << j)) == 0)continue;
				for(int k = 0; k  < n; k++){
					if((i & (1 << k)) || i + (1 << k) > ful)continue;
					if(bit[k] == bit[j] || ter[k] == ter[j])
						dp[i + (1 << k)][k] += dp[i][j];
				}
		}
	}
	long long ans = 0;
	for(int i = 0;  i < n; i++){
		ans += dp[ful][i];
	}
	cout << ans;
}

Compilation message

beauty.cpp:34:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   34 | main(){
      | ^~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 468 KB Output is correct
7 Correct 1 ms 468 KB Output is correct
8 Correct 1 ms 468 KB Output is correct
9 Correct 1 ms 468 KB Output is correct
10 Correct 1 ms 468 KB Output is correct
11 Correct 8 ms 2900 KB Output is correct
12 Correct 6 ms 2900 KB Output is correct
13 Correct 32 ms 11100 KB Output is correct
14 Correct 167 ms 43300 KB Output is correct
15 Correct 135 ms 43392 KB Output is correct
16 Correct 130 ms 43336 KB Output is correct
17 Correct 165 ms 43372 KB Output is correct
18 Correct 125 ms 43492 KB Output is correct
19 Correct 751 ms 172048 KB Output is correct
20 Correct 610 ms 172740 KB Output is correct