题目描述
有 2^n(n≤7) 个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 号国家和 4 号国家也踢一场,胜者晋级……晋级后的国家用相同的方法继续完成赛程,直到决出冠军。给出各个国家的能力值,请问亚军是哪个国家?
输入格式
第一行一个整数 n,表示一共 2^n2n 个国家参赛。
第二行 2^n个整数,第 i 个整数表示编号为 i 的国家的能力值。
数据保证不存在平局。
输出格式
仅一个整数,表示亚军国家的编号。
输入输出样例
输入 #1
3 4 2 3 1 10 5 9 7
输出 #1
1
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-01 11:40:10
* @LastEditTime: 2022-03-10 17:00:09
*/
#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
int order;
int score;
};
node tree[10001];
bool cmp(node x,node y)
{
if(x.score>y.score)
return true;
return false;
}
int main()
{
cin>>n;
n=pow(2,n);
for(int i=1;i<=n;i++){
tree[i].order=i;
cin>>tree[i].score;
}
sort(tree+1,tree+n/2+1,cmp);
sort(tree+n/2+1,tree+n+1,cmp);
if(tree[1].score>tree[n/2+1].score)
cout<<tree[n/2+1].order;
else
cout<<tree[1].order;
}