比较简单的一道题,输入之后直接判断就可以了,
#include <bits/stdc++.h>
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pa;
int m, n;
int heap[1005];
int cnt;
void postorder(int root) {
if (root * 2 <= n) postorder(root * 2);
if (root * 2 + 1 <= n) postorder(root * 2 + 1);
cout << heap[root] << (--cnt ? " " : "\n");
}
int main() {
cin >> m >> n;
while (m--) {
for (int i = 1; i <= n; i++) {
cin >> heap[i];
}
int cnt1 = 0, cnt2 = 0;
for (int i = 1; i <= n / 2; i++) {
if (heap[i] >= heap[i * 2]) cnt1++;
if (i * 2 + 1 <= n && heap[i] >= heap[i * 2 + 1]) cnt1++;
if (heap[i] <= heap[i * 2]) cnt2++;
if (i * 2 + 1 <= n && heap[i] <= heap[i * 2 + 1]) cnt2++;
}
if (cnt1 == n - 1) cout << "Max Heap\n";
else if (cnt2 == n - 1) cout << "Min Heap\n";
else cout << "Not Heap\n";
cnt = n;
postorder(1);
}
return 0;
}