제출 #387628

#제출 시각아이디문제언어결과실행 시간메모리
387628casperwangCheerleaders (info1cup20_cheerleaders)C++14
0 / 100
2074 ms2764 KiB
#include <bits/stdc++.h> #define pb emplace_back #define All(x) x.begin(), x.end() using namespace std; #define debug(args...) kout("[ " + string(#args) + " ]", args) void kout() { cerr << endl; } template <class T, class ...U> void kout(T a, U ...b) { cerr << a << ' ',kout(b...); } template <class T> void pary(T L, T R) { while (L != R) cerr << *L << " \n"[++L==R]; } const int MAXN = 17; int N; int ans; vector <int> a, c; vector <int> ord; inline int lb(int a) { return a &- a; } void init() { a.resize(1<<N); c.resize(1<<N); int now = 0; ord.pb(0); for (int i = 1; i < (1<<N); i++) { now ^= lb(i); ord.pb(now); } } int cnt() { int s = 0; for (int i = 0; i < (1<<N); i++) { for (int j = i+1; j < (1<<N); j++) { s += c[i] > c[j]; } } return s; } signed main() { ios_base::sync_with_stdio(0), cin.tie(0); cin >> N; init(); for (int i = 0; i < (1<<N); i++) cin >> a[i], c[a[i]] = i; ans = cnt(); for (int j = 0; j < N; j++) { for (int id : ord) { for (int i = 0; i < (1<<N); i++) c[i] ^= id; ans = min(ans, cnt()); } for (int i = 0; i < (1<<N); i++) { c[i] = (1<<(N-1)) * (c[i] & 1) + c[i] / 2; } } cout << ans << '\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...