Submission #41134

# Submission time Handle Problem Language Result Execution time Memory
41134 2018-02-13T04:58:14 Z wzy Beautiful row (IZhO12_beauty) C++11
0 / 100
3000 ms 145132 KB
#include <bits/stdc++.h>
using namespace std;
#define F first
#define pb push_back
#define S second
#define pii pair<int,int>
#define int long long
int n;
vector<int> v;
vector<int> adj[30];
int dp[21][1LL<<20];
bool vis[21][1LL<<20];
pair<int,int> f(int x){
	int a1 = 0 , a2 = 0;
	int z =x;
	while(z > 0){
		if(z%2 == 1) a1++;
		z/= 2;
	}
	z = x;
	while(z > 0){
		if(z%3 == 1) a2++;
		z/=3;
	}
	return pair<int,int>(a1, a2);
}


int solve(int i , int mask){
	if(vis[i][mask]) return dp[i][mask];
	vis[i][mask] = true;
	int maxxi = 1<<n;
	maxxi--;
	if(mask == maxxi) return dp[i][mask] = 1;
	for(int j = 0 ; j < adj[i].size() ; j++){
		int v = adj[i][j];
		if(mask & 1<<v) continue;
		dp[i][mask] += solve(v , 1<<v | mask);
	}
	return dp[i][mask];
}

int32_t main(){
	cin>>n;
	v.resize(n);
	for(int i = 0 ; i < n ;i++) cin>>v[i];
	for(int i = 0 ; i <n; i++){
		for(int j = i + 1 ; j < n;j++){
			if(f(v[i]).F == f(v[j]).F || f(v[i]).S ==f(v[j]).S){
				adj[i].pb(j);
				adj[j].pb(i);
			}
		}
	}
	int ans = 0;
	for(int i = 0 ; i < n ; i++){
		ans+= solve(i , 1<<i);
	}
	cout<<ans<<endl;
}

Compilation message

beauty.cpp: In function 'long long int solve(long long int, long long int)':
beauty.cpp:35:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0 ; j < adj[i].size() ; j++){
                    ^
# Verdict Execution time Memory Grader output
1 Correct 1 ms 248 KB Output is correct
2 Correct 1 ms 356 KB Output is correct
3 Correct 1 ms 424 KB Output is correct
4 Correct 1 ms 440 KB Output is correct
5 Correct 2 ms 496 KB Output is correct
6 Correct 2 ms 696 KB Output is correct
7 Correct 2 ms 824 KB Output is correct
8 Correct 3 ms 860 KB Output is correct
9 Correct 2 ms 860 KB Output is correct
10 Correct 2 ms 860 KB Output is correct
11 Correct 15 ms 2540 KB Output is correct
12 Correct 11 ms 2540 KB Output is correct
13 Correct 67 ms 8556 KB Output is correct
14 Correct 465 ms 34740 KB Output is correct
15 Correct 634 ms 34740 KB Output is correct
16 Correct 393 ms 34740 KB Output is correct
17 Correct 534 ms 34740 KB Output is correct
18 Correct 277 ms 34740 KB Output is correct
19 Execution timed out 3056 ms 145132 KB Time limit exceeded
20 Halted 0 ms 0 KB -