답안 #669783

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
669783 2022-12-07T09:20:46 Z sudheerays123 아름다운 순열 (IZhO12_beauty) C++17
0 / 100
1852 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 = 1e9 , MOD = 1e9+7;

ll n;
ll dp[(1ll<<N)+5][N+5];
vector<ll> a(N+5);

ll twocount(ll x){

	ll s = 1;
	while(s <= (x/2)) s *= 2;

	ll cnt = 0;

	while(x){
		ll p = x/s;
		x -= p*s;
		if(p == 1) cnt++;
		s /= 2;
	}

	return cnt;
}

ll threecount(ll x){

	ll s = 1;
	while(s <= (x/3)) s *= 3;

	ll cnt = 0;

	while(x){
		ll p = x/s;
		x -= p*s;
		if(p == 1) cnt++;
		s /= 3;
	}

	return cnt;
}

ll c2[N+5] , c3[N+5];

ll go(ll mask , ll last){

	if(twocount(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[last] == c2[i] || c3[last] == c3[i]) ans += go(mask|(1ll<<i),i);
	}

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

void solve(){

	cin >> n;
	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 73 ms 205388 KB Output is correct
2 Correct 73 ms 205408 KB Output is correct
3 Correct 74 ms 205492 KB Output is correct
4 Correct 72 ms 205388 KB Output is correct
5 Correct 73 ms 205460 KB Output is correct
6 Correct 74 ms 205388 KB Output is correct
7 Correct 75 ms 205416 KB Output is correct
8 Correct 74 ms 205388 KB Output is correct
9 Correct 77 ms 205456 KB Output is correct
10 Correct 75 ms 205436 KB Output is correct
11 Correct 114 ms 205480 KB Output is correct
12 Correct 106 ms 205448 KB Output is correct
13 Correct 321 ms 205564 KB Output is correct
14 Correct 1443 ms 205576 KB Output is correct
15 Correct 1852 ms 205516 KB Output is correct
16 Correct 1125 ms 205612 KB Output is correct
17 Correct 1509 ms 205508 KB Output is correct
18 Correct 894 ms 205500 KB Output is correct
19 Runtime error 269 ms 262144 KB Execution killed with signal 11
20 Halted 0 ms 0 KB -