P4715 【深基16.例1】淘汰赛 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
队列法,pair型队列,可以加深对pair和队列的理解和应用,用队列是因为从头出,从尾进,刚好可以适合这题形成闭环,主要make_pair(),还有x.first,x.second这种写法
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n;
signed main()
{
cin>>n;
n=pow(2,n);
queue<pair<int,int>> q;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
q.push(make_pair(i,x));
}
while(q.size()>2)//直到剩最后两个停止
{
pair<int,int> x,y;
x=q.front();//从头弹出
q.pop();
y=q.front();
q.pop();
if(x.second>y.second)
{
q.push(x);//从尾放入
}
else
{
q.push(y);
}
}
pair<int,int> x,y;
x=q.front();
q.pop();
y=q.front();
q.pop();
if(x.second>y.second)
{
cout<<y.first;//输出亚军编号
}
else
{
cout<<x.first;
}
return 0;
}