题目描述
有 2n(n≤7)2^n(n\le7)2n(n≤7) 个国家参加世界杯决赛圈且进入淘汰赛环节。我经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢比赛时高者获胜。1 号国家和 2 号国家踢一场比赛,胜者晋级。3 号国家和 4 号国家也踢一场,胜者晋级……晋级后的国家用相同的方法继续完成赛程,直到决出冠军。给出各个国家的能力值,请问亚军是哪个国家?
输入格式
无
输出格式
无
输入输出样例
输入 #1
3
4 2 3 1 10 5 9 7
输出 #1
1
#include <iostream>
#include <cmath>
using namespace std;
int n;
struct node{
int id;
int val;
}a[10][200];
node max(node x, node y) {
return x.val > y.val ? x : y;
}
node min(node x, node y) {
return x.val < y.val ? x : y;
}
int main() {
cin >> n;
for(int i = 1; i <= pow(2, n); i++)
cin >> a[0][i].val, a[0][i].id = i;
int sum = pow(2, n);
for(int i = 1; i <= n; i++) {
int tot = 0;
for(int j = 1; j <= sum; j += 2) {
a[i][++tot] = max(a[i - 1][j], a[i - 1][j + 1]);
}
sum /= 2;
}
cout << min(a[n - 1][1], a[n - 1][2]).id;
return 0;
}