Cod sursa(job #1023235)

Utilizator vladvaldezVlad Dimulescu vladvaldez Data 6 noiembrie 2013 17:44:39
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#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;
}