Pagini recente » Cod sursa (job #1076973) | Cod sursa (job #2414206) | Cod sursa (job #1616045) | Cod sursa (job #1902644) | Cod sursa (job #2068716)
#include <iostream>
#include <fstream>
#define NMAX 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int h[NMAX], n;
void up(int p)
{
if(p>1 && h[p/2]>h[p]){
swap(h[p], h[p/2]);
up(p/2);
}
}
void add(int x)
{
h[++n]=x;
up(n);
}
void down(int p)
{
if(p*2+1<=n && (h[p*2]<h[p] || h[p*2+1]<h[p])){
if(h[p*2]<h[p*2+1]){
swap(h[p], h[p*2]);
down(p*2);
}else{
swap(h[p*2+1], h[p]);
down(p*2+1);
}
}else if(p*2<=n && h[p*2]<h[p]){
swap(h[p*2], h[p]);
}
}
void del(int p)
{
swap(h[p], h[n]);
n--;
up(p);
down(p);
}
void citire()
{
int i,x,nums;
f>>nums>>h[++n];
for(i=2;i<=nums;i++){
f>>x;
add(x);
}
}
int main()
{
citire();
while(n>0){
g<<h[1]<<' ';
del(1);
}
return 0;
}