Pagini recente » Cod sursa (job #1251249) | Cod sursa (job #1227071) | Cod sursa (job #1807252) | Cod sursa (job #955393) | Cod sursa (job #2068733)
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,h[500005],k;
void up(int p) {
if (p>1 && h[p]<h[p/2]) {
swap(h[p],h[p/2]);
up(p/2);
}
}
void add(int x) {
h[++k]=x;
up(k);
}
void down(int p) {
if (p*2+1<=n && (h[p*2]<h[p] || h[p*2+1]<h[p]))
if (h[2*p]<h[2*p+1]) {
swap(h[p],h[p*2]);
down(p*2);
}
else {
swap(h[p],h[p*2+1]);
down(p*2+1);
}
else
if (p*2<=n && h[p*2]<h[p])
swap(h[p],h[p*2]);
}
void del(int x) {
swap(h[x],h[n]);
n--;
up(x);
down(x);
}
int main() {
int i,x;
f>>n;
for (i=1;i<=n;i++) {
f>>x;
add(x);
}
for (i=1;i<=k;i++) {
g<<h[1]<<' ';
del(1);
}
return 0;
}