简易模拟,不知道哪里错了,40分求助
#include<bits/stdc++.h>
using namespace std;
int n,n1=1,flag=0,flag2,flag1,p;
struct node{
int pw,num;
}lb[500];
void kill(){
while(n){
p=0;
for(int i=1;i<=n1;i++){
if(lb[i].pw)p++;
if(p==1)flag1=i;
if(p==2){
flag2=i;
if(lb[flag2].pw>lb[flag1].pw)lb[flag1].pw=0;
else lb[flag2].pw=0;
p=0;
}
}
n--;
}
if(lb[flag1].pw<lb[flag2].pw){
printf("%d",lb[flag1].num);
return;
}
printf("%d",lb[flag2].num);
return;
}
int main(){
scanf("%d",&n);
n1=pow(2,n);
for(int i=1;i<=n1;i++){
scanf("%d",&lb[i].pw);
lb[i].num=i;
}
kill();
return 0;
}