題目
有(n≤7)個國家參加世界杯決賽圈且進入淘汰賽環節。已經知道各個國家的能力值,且都不相等。能力值高的國家和能力值低的國家踢比賽時高者獲勝。1號國家和2號國家踢一場比賽,勝者晉級。3號國家和4號國家也踢一場,勝者晉級……晉級后的國家用相同的方法繼續完成賽程,直到決出冠軍。給出各個國家的能力值,請問亞軍是哪個國家?
輸入輸出格式
輸入格式
第一行一個整數n,表示一共個國家參賽。
第二行個整數,第i個整數表示編號為i的國家的能力值(1≤i≤
)。
數據保證不存在平局。
輸出格式
僅一個整數,表示亞軍國家的編號。
輸入輸出樣例
輸入樣例
3
4 2 3 1 10 5 9 7
輸出樣例
1
代碼
#include<cstdio>
#include<iostream>
using namespace std;
int value[260],winner[260],n;
void dfs(int x){if(x>=1<<n){return;}else{dfs(2*x);//遍歷左子樹dfs(2*x+1);//遍歷右子樹int lvalue=value[2*x],rvalue=value[2*x+1];if(lvalue>rvalue){//比較左右子樹的值,大的上去value[x]=lvalue;winner[x]=winner[2*x];}else{value[x]=rvalue;winner[x]=winner[2*x+1];}}
}
int main(){cin>>n;for(int i=0;i<1<<n;i++){//掃描進來cin>>value[i+(1<<n)];winner[i+(1<<n)]=i+1;}dfs(1);if(value[2]>value[3]){//比較,大的上去成為冠軍,小的為亞軍cout<<winner[3];}else{cout<<winner[2];}return 0;
}