Copyright © 2088 2014男篮世界杯_u20世界杯8强 - malajz.com All Rights Reserved.
友情链接
题目描述
有 2^n(n≤7)2n(n≤7) 个国家参加世界杯决赛圈且进入淘汰赛环节。已经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 号国家和 4 号国家也踢一场,胜者晋级……晋级后的国家用相同的方法继续完成赛程,直到决出冠军。给出各个国家的能力值,请问亚军是哪个国家?
输入格式
第一行一个整数 n,表示一共 2^n 个国家参赛。
第二行 2^n 个整数,第 i 个整数表示编号为 i 的国家的能力值(1≤i≤2^n)。
数据保证不存在平局。
筛选过程
输出格式
仅一个整数,表示亚军国家的编号。
代码
#include
using namespace std;
struct MyStruct
{
int val; //队伍的能力值
int id; //队伍的编号
}a[1010];
int main()
{
int n;
int tmp = 1; //用于存队伍编号
cin >> n;
for (int i = (1 << n); i < (1 << (n + 1)); i++)
{
cin >> a[i].val; //读入每一支队伍的能力值
a[i].id = tmp++; //赋值每一支队伍的编号
}
for (int i = (1 << n) - 1; i > 1; i--)
{
if (a[i * 2].val > a[i * 2 + 1].val)
{
a[i] = a[i * 2];
}
else
{
a[i] = a[i * 2 + 1];
}
}
if (a[2].val > a[3].val)
{
cout << a[3].id;
}
else
{
cout << a[2].id;
}
return 0;
}