大佬帮忙看看,为什么WA啊?
查看原帖
大佬帮忙看看,为什么WA啊?
242490
lyc呐楼主2020/8/13 20:44
#include<bits/stdc++.h>
using namespace std;
inline int lc(int x){
	return x<<1;
}
inline int rc(int x){
	return (x<<1)|1;
}
int T[10000]={0};
int n,cnt=1;
void updata(int n,int lm)	//递归更新树 
{							//n为当前结点,lm为结点总数 
	if(!T[lc(n)]&&lc(n)<=lm)
		updata(lc(n),lm);
	if(!T[rc(n)]&&rc(n)<=lm)
		updata(rc(n),lm);
	if(n<pow(2,n))
		T[n]=max(T[lc(n)],T[rc(n)]);
}
int main()
{
	scanf("%d",&n);
	int arr[n+5];
	int d=pow(2,n);			//肯定是满二叉树 
	for(int i=d;i<d+pow(2,n);i++)//直接输入叶子结点	
	{
		scanf("%d",&T[i]);
		arr[cnt++]=T[i];
	}
	updata(1,pow(2,n+1)-1);	//向上更新树 
	int temp=min(T[2],T[3]);
	for(int i=1;i<=n;i++)	//找到亚军对应的号码 
	{
		if(arr[i]==temp)
		{
			printf("%d",i);
			return 0;
		}
	}
}
2020/8/13 20:44
加载中...