Pagini recente » Cod sursa (job #111192) | Cod sursa (job #1500461) | Cod sursa (job #1844682) | Cod sursa (job #56775) | Cod sursa (job #2626746)
#include<bits/stdc++.h>
using namespace std;
int N, n;
int a[500010];
void heapifydown(int i) {
int mx = i;
if (2*i <= N && a[2*i]>a[mx]) mx=2*i;
if (2*i+1<=N && a[2*i+1]>a[mx]) mx=2*i+1;
if (mx!=i) {
swap(a[i], a[mx]);
heapifydown(mx);
}
}
void pop() {
swap(a[1], a[N]);
N--;
heapifydown(1);
}
int main() {
ifstream cin("algsort.in");
ofstream cout("algsort.out");
cin>>n;
for (int i=1; i<=n; i++) cin>>a[i];
N=n;
for (int i=n/2; i>=1; i--) {
heapifydown(i);
}
for (int i=n; i>=1; i--) {
pop();
}
for (int i=1; i<=n; i++) cout<<a[i]<<" ";
return 0;
}