Pagini recente » Cod sursa (job #3261625) | Cod sursa (job #23818) | Cod sursa (job #2102712) | Cod sursa (job #2914919) | Cod sursa (job #2068781)
#include <bits/stdc++.h>
using namespace std;
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int h[500020],nr;
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){
nr++;
h[nr]=x;
up(nr);
}
void down(int p){
if (p*2+1<=nr&&(h[p*2]<h[p]||h[p*2+1]<h[p])){
if (h[p*2+1]>h[p*2]) {
swap(h[p*2],h[p]);
down(p*2);}
else {swap(h[p*2+1],h[p]);down(p*2+1);}
}
else if (p*2<=nr&&h[p*2]<h[p]) {swap(h[p*2],h[p]);down(p*2);}
}
void del(){
swap(h[1],h[nr]);
nr--;
down(1);
}
int main()
{
int n,i,x;
fscanf(f,"%d",&n);
nr=0;
for (i=1;i<=n;i++){
fscanf(f,"%d",&x);
add(x);
}
while (nr){
fprintf(g,"%d ",h[1]);
del();
}
fclose(f);
fclose(g);
return 0;
}