献上code
#include<bits/stdc++.h>
using namespace std;
int n,a[129],l,r,ans;
int champion(int x,int y){
int max=-1,maxrem;
for(int i=x;i<=y;i++)if(a[i]>max){
max=a[i];
maxrem=i;
}
return maxrem;
}
int main(){
cin>>n;
int t=n,n=1;
for(int i=1;i<=t;i++)n*=2;
for(int i=1;i<=n;i++)cin>>a[i];
if(champion(1,n)>n/2)cout<<max(champion(1,n/4),champion(n/4+1,n/2));
else cout<<max(champion(n/2+1,n/4*3),champion(n/4*3+1,n));
return 0;
}
简单解释下;
先把2^n给平分了
然后如果冠军在左,左边全盒饭了
在右右边全盒饭
所以不要和冠军一组
然后在有亚军的那边寻找冠军(脑子瓦特又分了)
救救孩纸吧