# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
338480 | 2020-12-23T09:09:05 Z | beksultan04 | 아름다운 순열 (IZhO12_beauty) | C++14 | 803 ms | 105096 KB |
#include <bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define OK puts("OK"); #define NO puts("NO"); #define YES puts("YES"); #define fr first #define sc second #define ret return #define scan1(a) scanf("%lld",&a); #define scan2(a,b) scanf("%lld %lld",&a, &b); #define scan3(a,b,c) scanf("%lld %lld %lld",&a,&b,&c); #define all(s) s.begin(),s.end() #define allr(s) s.rbegin(),s.rend() #define pb push_back #define sz(v) (int)v.size() #define endi puts(""); const int N = 1e6+11,INF=1e9+7; int q[N],dp[N][30],tr[30],dv[30],vis[N][21],g[50][50],n; int troich(int x){ int ans=0; while (x > 0){ if (x%3==1)ans++; x /=3; } ret ans; } int dvoich(int x){ int ans=0; while (x > 0){ if (x%2==1)ans++; x /=2; } ret ans; } bool is(int a,int b){ ret (tr[a] == tr[b] || dv[a] == dv[b]); } int rec(int x,int j){ if (x == (1<<n)-1)ret 1; if (vis[x][j]==1)ret dp[x][j]; vis[x][j]=1; int ans=0,i; for (i=0;i<n;++i){ if (i == j || (x&(1<<i)) || g[i][j] == 0)continue; ans += rec(x+(1<<i),i); } ret dp[x][j]=ans; } main(){ int i,j,s,cnt=1; scan1(n) for (i=0;i<n;++i){ scan1(q[i]) tr[i]=troich(q[i]); dv[i]=dvoich(q[i]); } for (i=0;i<n;++i){ for (j=i+1;j<n;++j){ if (is(i,j)){ g[i][j]=1; g[j][i]=1; } } } int ans=0; for (i=0;i<n;++i){ ans+=rec((1<<i),i); } cout <<ans; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 364 KB | Output is correct |
2 | Correct | 1 ms | 364 KB | Output is correct |
3 | Correct | 1 ms | 364 KB | Output is correct |
4 | Correct | 0 ms | 364 KB | Output is correct |
5 | Correct | 0 ms | 364 KB | Output is correct |
6 | Correct | 1 ms | 748 KB | Output is correct |
7 | Correct | 1 ms | 748 KB | Output is correct |
8 | Correct | 1 ms | 748 KB | Output is correct |
9 | Correct | 1 ms | 748 KB | Output is correct |
10 | Correct | 1 ms | 748 KB | Output is correct |
11 | Correct | 20 ms | 6764 KB | Output is correct |
12 | Correct | 15 ms | 6892 KB | Output is correct |
13 | Correct | 128 ms | 26568 KB | Output is correct |
14 | Correct | 607 ms | 105084 KB | Output is correct |
15 | Correct | 803 ms | 105068 KB | Output is correct |
16 | Correct | 510 ms | 105096 KB | Output is correct |
17 | Correct | 706 ms | 104940 KB | Output is correct |
18 | Correct | 389 ms | 105068 KB | Output is correct |
19 | Runtime error | 28 ms | 2028 KB | Execution killed with signal 11 (could be triggered by violating memory limits) |
20 | Halted | 0 ms | 0 KB | - |