Pagini recente » Cod sursa (job #1867348) | Cod sursa (job #1538541) | Cod sursa (job #2562368) | Cod sursa (job #299235) | Cod sursa (job #1023235)
#include <stdio.h>
using namespace std;
FILE *f=fopen("algsort.in","r");
FILE *g=fopen("algsort.out","w");
int n,i,h[500002],m;
void combheap(int i,int n)
{
int fiu=2*i,tata=i;
int v=h[i];
while(fiu<=n){
if (fiu<n) if (h[fiu]>h[fiu+1])fiu++;
if (v>h[fiu]){h[tata]=h[fiu];tata=fiu;fiu=fiu*2;}
else fiu=n+1;
}
h[tata]=v;
}
int extragmax()
{
int v=h[1];
h[1]=h[n];n--;
combheap(1,n);
return v;
}
int main()
{
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&h[i]);
for(i=n/2;i>=1;i--)
combheap(i,n);
m=n;
for(i=1;i<=m;i++)
fprintf(g,"%d ",extragmax());
fclose(g);
return 0;
}