Submission #884440

#TimeUsernameProblemLanguageResultExecution timeMemory
884440lalig777Turnir (COCI17_turnir)C++14
0 / 100
409 ms18648 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;

int main(){
	int n;
	cin>>n;
	int ntotal=1;
	for (int i=0; i<n; i++) ntotal*=2;
	vector<pair<int,int> >nums(ntotal);
    vector<int>nivel(ntotal);
	for (int i=0; i<ntotal; i++){
		cin>>nums[i].first;
		nums[i].second=i;
	}sort(nums.begin(), nums.end());
	int xact=1, xant=0;
	for (int i=0; i<n; i++){
		for (int j=xant; j<min(xact, ntotal); j++) nivel[nums[j].second]=i;
		xant=xact;
        xact=(xact+1)*2-1;
	}for (int i=ntotal-2; i>=0; i--){
		if (nums[i].first==nums[i+1].first) nivel[nums[i].second]=nivel[nums[i+1].second];
	}for (int i=0; i<ntotal; i++) cout<<n-nivel[i]<<" ";
	cout<<endl;
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...