Submission #902729

#TimeUsernameProblemLanguageResultExecution timeMemory
902729qqspeed20015Turnir (COCI17_turnir)C++17
100 / 100
1191 ms42408 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

    int n;
    cin >> n;
    vector <int> listNum((1LL << n));
    for (long long i = 0; i < (1LL << n); i++)
        cin >> listNum[i];
    vector <int> temp = listNum;
    sort(temp.begin(), temp.end());
    vector <int> listLevel(1LL << n);
    int curLevel = 0, countElement = 0;
    for (long long i = 0; i < (1LL << n); i++) {
        if (countElement < (1LL << curLevel)) {
            listLevel[i] = n - curLevel;
            countElement++;
        }
        else {
            countElement = 1;
            curLevel++;
            listLevel[i] = n - curLevel;
        }
    }
    map <int, int> setLevel;
    for (long long i = (1LL << n) - 1; i >= 0; i--) {
        if (setLevel.find(temp[i]) == setLevel.end())
            setLevel[temp[i]] = listLevel[i];
        else
            setLevel[temp[i]] = min(setLevel[temp[i]], listLevel[i]);
    }
    for (long long i = 0; i < (1LL << n); i++) {
        if (i != 0)
            cout << ' ';
        cout << setLevel[listNum[i]];
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...