#includeusing namespace std; const int N = 1e5 + 10; int h[N], sz; void down(int u) { int v = u; if (u * 2 <= sz && h[v] > h[u * 2]) v = u * 2; if (u * 2 + 1 <= sz && h[v] > h[u * 2 + 1]) v = u * 2 + 1; if (v != u) { swap(h[u], h[v]); down(v); } } int main() { int n, m; scanf("%d %d", &n, &m); sz = n; for (int i = 1; i <= n; i ++) scanf("%d", &h[i]); for (int i = n / 2; i; i --) down(i); while (m --) { printf("%d ", h[1]); h[1] = h[sz --]; down(1); } return 0; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)