P4715求调
查看原帖
P4715求调
1598574
YuZhitong2012楼主2025/1/26 18:29

60pts求调

#include<iostream>
#include<cmath>
using namespace std;
int n;
const int N=128;
struct Node{
	int data;
	int num;
	int lchild,rchild;
};
Node tree[2*N];
void init(int size){
	for (int i=1;i<pow(2,size);i++){
		tree[i].lchild=2*i;
		tree[i].rchild=2*i+1;
	}
	for (int i=pow(2,size);i<pow(2,size+1);i++){
		tree[i].lchild=-1;
		tree[i].rchild=-1;
		tree[i].num=i;
	}
}
int main(){
	cin>>n;
	init(n);
	for (int i=pow(2,n);i<pow(2,n+1);i++){
		cin>>tree[i].data;
	}
	for (int i=n-1;i>0;i--){
		for (int j=pow(2,i);j<pow(2,i+1);j++){
			if (tree[tree[j].lchild].data>tree[tree[j].rchild].data){
				tree[j].num=tree[tree[j].lchild].num;
				tree[j].data=tree[tree[j].lchild].data;
			} else {
				tree[j].num=tree[tree[j].rchild].num;
				tree[j].data=tree[tree[j].rchild].data;
			}
		}
	}
	if (tree[1].num==tree[2].num){
		cout<<tree[3].num-pow(2,n)+1;
	} else {
		cout<<tree[2].num-pow(2,n)+1;
	}
	return 0;
}
2025/1/26 18:29
加载中...