Pagini recente » Cod sursa (job #875568) | Cod sursa (job #1313585) | Cod sursa (job #3267692) | Cod sursa (job #2580541) | Cod sursa (job #2068732)
#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 (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*2+1]);
swap(h[p*2],h[p]);
down(p*2);
}
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;
}