https://pintia.cn/problem-sets/994805342720868352/problems/1071785408849047552
#include<bits/stdc++.h>
using namespace std;
const int N=1e3*5+10;
int a[N],n,flag1,flag2;
vector<int>path;
void dfs(int u)
{
if((u*2)>n&&(u*2+1)>n)//说明是叶子
{
for(int i=0;i<path.size();i++) cout<<path[i]<<" ";
cout<<a[u]<<endl;
return;
}
if(u*2+1<=n)
{
if(a[u]>=a[u*2+1]) flag1=1;
else flag2=1;
path.push_back(a[u]);
dfs(u*2+1);
path.pop_back();
}
if(u*2<=n)
{
if(a[u]>=a[u*2]) flag1=1;
else flag2=1;
path.push_back(a[u]);
dfs(u*2);
path.pop_back();
}
}
int main(void)
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
dfs(1);
if(flag1&&flag2) puts("Not Heap");
else if(flag1) puts("Max Heap");
else puts("Min Heap");
}