# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
90103 | 2018-12-20T08:59:41 Z | Aydarov03 | Beautiful row (IZhO12_beauty) | C++14 | 3000 ms | 600 KB |
#include <bits/stdc++.h> #define fr first #define sc second using namespace std; int a[30]; int st[30]; bool used[30]; int n , ans; map <int,int> bin; map <int,int> ter; void rec( int k ) { if( k == n + 1 ) { for(int i = 1; i < n; i++) if( ter[ st[i] ] != ter[ st[i+1] ] && bin[ st[i] ] != bin[ st[i+1] ])return; ans++; return; } for(int i = 1; i <= n; i++) { if( !used[i] ) { st[k] = a[i]; used[ i ] = true; rec( k + 1 ); used[ i ] = false; } } } void to_bin( int a ) { int one = 0; int A = a; while( a > 0 ) { one += ( a % 2 == 1); a /= 2; } bin[ A ] = one; } void to_ter( int a ) { int one = 0; int A = a; while( a > 0 ) { one += ( a % 3 == 1); a /= 3; } ter[ A ] = one; } main() { cin >> n; for(int i = 1; i <= n; i++)cin >> a[i]; for(int i = 1; i <= n; i++) { to_bin( a[i] ); to_ter( a[i] ); } rec( 1 ); cout << ans; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 488 KB | Output is correct |
3 | Correct | 2 ms | 488 KB | Output is correct |
4 | Correct | 2 ms | 488 KB | Output is correct |
5 | Correct | 2 ms | 488 KB | Output is correct |
6 | Correct | 363 ms | 600 KB | Output is correct |
7 | Correct | 316 ms | 600 KB | Output is correct |
8 | Correct | 1130 ms | 600 KB | Output is correct |
9 | Correct | 357 ms | 600 KB | Output is correct |
10 | Correct | 809 ms | 600 KB | Output is correct |
11 | Execution timed out | 3020 ms | 600 KB | Time limit exceeded |
12 | Halted | 0 ms | 0 KB | - |