# | TimeUTC-0 | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
418402 | dolphingarlic | Cheerleaders (info1cup20_cheerleaders) | C++14 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int n, h[1 << 17], at[1 << 17];
int main() {
cin.tie(0)->sync_with_stdio(0);
cin >> n;
for (int i = 0; i < (1 << n); i++) {
cin >> h[i];
at[h[i]] = i;
}
ll mn = LLONG_MAX;
string best_seq;
for (int shift = 0; shift < max(1, n); shift++) {
int mask = 0;
ll inv_tot = 0;
for (int i = n - 1; ~i; i--) {
ll inv_0 = 0, inv_1 = 0;
for (int j = 0; j < (1 << n); j += 1 << i + 1) {
vector<int> left, right;
for (int k = j; k < j + (1 << i); k++) left.push_back(h[k]);
for (int k = j + (1 << i); k < j + (1 << i + 1); k++) right.push_back(h[k]);
sort(left.begin(), left.end());
sort(right.begin(), right.end());
for (int j : left)
inv_0 += lower_bound(right.begin(), right.end(), j) - right.begin();