80分求助
查看原帖
80分求助
339018
Panic_Kid楼主2021/10/18 09:13
// I AK IOI!!!
#include<iostream>
#include<cstdio>
using namespace std;

int value[260],winer[130];
int n;

void dfs(int x)
{
	if(x >= 1 << n){
		return;	
	}else{
		dfs(2 * x);
		dfs(2 * x + 1);
		int lvalue = value[2 * x];
		int rvalue = value[2 * x + 1];
		if(lvalue > rvalue){
			value[x] = lvalue;
			winer[x] = winer[2 * x];
		}else{
			value[x] = rvalue;
			winer[x] = winer[2 * x + 1];
		}
	}
}

int main()
{
	cin >> n;
	for(int i = 0;i < 1 << n;i++){
		cin >> value[i +(1 << n)];
		winer[i+(1 << n)] = i + 1;
	}
	dfs(1);
	if(value[2] > value[3]){
		cout << winer[3];
	}else{
		cout << winer[2];
	}
	return 0;
}

2021/10/18 09:13
加载中...