题目链接:https://www.luogu.com.cn/problem/P4715
思路:
将数据两分(虽然题意是二叉树),求左边和右边的最大值,然后再输出较小值的编号
不需要开数组,只用在读取时就开始比较记录最大值和最大值的编号
代码如下
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int i = 0, mid, n, a, b, max1 = 0, max2 = 0;
int ans;
cin >> n;
n = pow(2, n);
mid = n / 2;
for (i; i < mid; ++i)
{
cin >> ans;
if (max1 < ans)
{
max1 = ans;
a = i;
}
}
for (i; i < n; ++i)
{
cin >> ans;
if (max2 < ans)
{
max2 = ans;
b = i;
}
}
if (max1 > max2)
{
a = b;
}
cout << a + 1 << endl;
return 0;
}