#include <algorithm>
#include <vector>
#include <iostream>
using namespace std;
const int SIZE = 1005;
int N;
int heap[SIZE];
bool visit[SIZE] = {false};
vector<int> path;
bool flagMAX = true;
bool flagMIN = true;
bool cmpMAX(const int& a, const int& b) {
return a > b;
}
bool cmpMIN(const int& a, const int& b) {
return a < b;
}
void DFS(int root) {
if (root * 2 > N) { //此时为叶节点
for (int i = 0; i < path.size(); i ++) {
if (i != path.size() - 1) cout << path[i] << " ";
else cout << path[i] << endl;
}
vector<int> pathMAX = path;
sort(pathMAX.begin(), pathMAX.end(), cmpMAX);
if (path == pathMAX) flagMIN = false;
vector<int> pathMIN = path;
sort(pathMIN.begin(), pathMIN.end(), cmpMIN);
if (path == pathMIN) flagMAX = false;
if (path != pathMAX && path != pathMIN) {
flagMAX = false;
flagMIN = false;
}
return ;
}
if (root * 2 + 1 <= N) {
path.push_back(heap[root * 2 + 1]);
DFS(root * 2 + 1);
path.pop_back();
}
if (root * 2 <= N) {
path.push_back(heap[root * 2]);
DFS(root * 2);
path.pop_back();
}
}
int main() {
cin >> N;
for (int i = 1; i <= N; i ++) cin >> heap[i];
path.push_back(heap[1]);
DFS(1);
if (flagMAX == true) {
cout << "Max Heap" << endl;
} else if (flagMIN == true) {
cout << "Min Heap" << endl;
} else {
cout << "Not Heap" << endl;
}
return 0;
}
08-28
122