# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
89291 | 2018-12-11T13:30:14 Z | abil | 아름다운 순열 (IZhO12_beauty) | C++14 | 301 ms | 632 KB |
/** Solution by Abil **/ # include <bits/stdc++.h> //////////////////////// # define fr first # define sc second # define pb push_back # define mk make_pair # define sz(s) s.size() # define all(s) s.begin(),s.end() # define int long long using namespace std; const long long N = (1e6 + 10); const long long mod = (1e9 + 7); vector<int > v; int f(int x){ int cnt = 0; while(x){ if(x % 3 == 1){ cnt++; } x = x / 3; } return cnt; } main() { int n, x; cin >> n; for(int i = 1;i <= n; i++){ cin >> x; v.pb(x); } sort(all(v)); int ans = 0; do{ bool f1 = true; for(int i = 0;i < sz(v) - 1; i++){ if((__builtin_popcount(v[i])) != (__builtin_popcount(v[i + 1])) && (f(v[i]) != f(v[i + 1]))){ f1 = false; break; } } if(f1){ ans++; } } while(next_permutation(all(v))); cout << ans; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 376 KB | Output is correct |
2 | Correct | 2 ms | 508 KB | Output is correct |
3 | Correct | 2 ms | 536 KB | Output is correct |
4 | Correct | 2 ms | 536 KB | Output is correct |
5 | Correct | 2 ms | 536 KB | Output is correct |
6 | Correct | 225 ms | 632 KB | Output is correct |
7 | Correct | 175 ms | 632 KB | Output is correct |
8 | Correct | 301 ms | 632 KB | Output is correct |
9 | Incorrect | 96 ms | 632 KB | Output isn't correct |
10 | Halted | 0 ms | 0 KB | - |