40分求助
查看原帖
40分求助
964427
S_ALPHA楼主2023/11/10 17:10

简易模拟,不知道哪里错了,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;
			}
		}
//		for(int i=1;i<=n1;i++)cout<<lb[i].pw<<" ";
//		cout<<endl;
		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;
}
2023/11/10 17:10
加载中...