#include<bits/stdc++.h>
using namespace std;
using ll = long long;
ll a[1048578];
ll ans[1048578];
int main() {
ll n, m, r, x, y, i, j, t;
cin >> n;
vector < pair < ll, ll > > v;
for (i = 0; i < (1<< n); i ++) {
cin >> a[i];
v.push_back(make_pair(a[i], i));
}
sort(v.begin(), v.end());
for (i = 0; i < (1<< n); i ++) {
j = i;
vector < ll > inds;
while (j < v.size() && v[j].first == v[i].first) {
inds.push_back(v[j].second);
j ++;
}
r = log2(j);
for (ll X : inds) {
ans[X] = r;
}
i = j - 1;
}
for (i = 0; i < (1<< n); i ++) {
cout <<n - ans[i] << " ";
}
cout << "\n";
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |