Submission #75033

#TimeUsernameProblemLanguageResultExecution timeMemory
75033charlies_mooTurnir (COCI17_turnir)C++98
100 / 100
730 ms28076 KiB
#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

int n,anss;
int ans[2000000];

struct Node
{
	int num,idx;
}a[2000000];

bool cmp(Node a,Node b)
{
	return a.num<b.num;
}

int pow2(int a)
{
	int ret=1;
	for(int i=1;i<=a;i++)
		ret*=2;
	return ret;
}

int log2(int from)
{
	int i;
	for(i=0;pow2(i)<=from;i++);
	return i-1;
}

int main()
{
	cin>>n;
	int deep=n,from_;
	n=pow2(n);
	for(int i=1;i<=n;i++)
	{
		a[i].idx=i;
		cin>>a[i].num;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=n;i++)
	{
		int k=a[i].num;
		from_=i;
		while(a[i].num<=k && i<=n)
			i++;
		i--,anss=deep-log2(i);
		for(int j=from_;j<=i;j++)
			ans[a[j].idx]=anss;
	}
	for(int i=1;i<=n;i++)
		cout<<ans[i]<<' ';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...