1155 Heap Paths (30 分)
#include <iostream>
#include <vector>
using namespace std;
vector<int> v;
int a[1010], n, maxn = 1, minn = 1;
void dfs(int u) {
if(u > n) return;
v.push_back(a[u]);
dfs(u * 2 + 1);
dfs(u * 2);
for(int i = 1; i < v.size(); ++i) {
if(v[i] > v[i - 1]) maxn = 0;
else minn = 0;
}
if(u * 2 > n){
for(int i = 0; i < v.size(); ++i)
cout << v[i] << " \n"[i == v.size() - 1];
}
v.pop_back();
}
int main() {
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> a[i];
dfs(1);
if(maxn == 0 && minn == 0)
printf("Not Heap\n");
else
printf("%s\n", maxn == 1 ? "Max Heap" : "Min Heap");
}