답안 #669829

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
669829 2022-12-07T12:02:41 Z sudheerays123 아름다운 순열 (IZhO12_beauty) C++17
0 / 100
442 ms 262144 KB
#include<bits/stdc++.h>
using namespace std;
#define fast ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define ll long long int
const ll N = 20 , INF = 1e18 , MOD = 1e9+7;

ll twocount(ll x){

	ll cnt = 0;

	while(x){
		if(x%2 == 1) cnt++;
		x /= 2;
	}

	return cnt;
}

ll threecount(ll x){

	ll cnt = 0;

	while(x){
		if(x%3 == 1) cnt++;
		x /= 3;
	}

	return cnt;
}

ll c2[N],c3[N];
ll n;
ll dp[(1ll<<N)+5][N+1];

ll go(ll mask , ll last){

	if(__builtin_popcountll(mask) == n) return 1;
	if(dp[mask][last] != -1) return dp[mask][last];

	ll ans = 0;

	for(ll i = 1; i <= n; i++){
		if(mask&(1ll<<i)) continue;

		if(last == 0) ans += go(mask|(1ll<<i),i);
		else if(c2[i] == c2[last] || c3[i] == c3[last]) ans += go(mask|(1ll<<i),i);
	}

	return dp[mask][last] = ans;
}

void solve(){

	cin >> n;

	vector<ll> a(n+5);

	for(ll i = 1; i <= n; i++){
		cin >> a[i];
		c2[i] = twocount(a[i]);
		c3[i] = threecount(a[i]);
	}

	memset(dp,-1,sizeof dp);

	cout << go(0,0);
}

int main(){

	fast;

	ll tc = 1;
	// cin >> tc;
	while(tc--) solve();

	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 74 ms 172608 KB Output is correct
2 Correct 62 ms 172600 KB Output is correct
3 Correct 66 ms 172648 KB Output is correct
4 Correct 61 ms 172700 KB Output is correct
5 Correct 67 ms 172544 KB Output is correct
6 Correct 62 ms 172648 KB Output is correct
7 Correct 62 ms 172652 KB Output is correct
8 Correct 62 ms 172644 KB Output is correct
9 Correct 62 ms 172596 KB Output is correct
10 Correct 66 ms 172608 KB Output is correct
11 Correct 72 ms 172664 KB Output is correct
12 Correct 70 ms 172640 KB Output is correct
13 Correct 120 ms 172640 KB Output is correct
14 Correct 384 ms 172780 KB Output is correct
15 Correct 442 ms 172620 KB Output is correct
16 Correct 329 ms 172620 KB Output is correct
17 Correct 436 ms 172664 KB Output is correct
18 Correct 282 ms 172616 KB Output is correct
19 Runtime error 212 ms 262144 KB Execution killed with signal 11
20 Halted 0 ms 0 KB -