Cod sursa(job #273161)

Utilizator me_andyAvramescu Andrei me_andy Data 8 martie 2009 11:40:57
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream.h>

#define max 500005

 ifstream f("algsort.in");
 ofstream g("algsort.out");
 long i,n,a[max],poz[max];



void down(int k)
{
 long t=2*k,aux;
 while(t<=n)
 {
  if(t<n && a[t+1]<a[t]) t++;
  if(a[k]>a[t])
  {
   aux=a[t];
   a[t]=a[k];
   a[k]=aux;
   k=t;
   t=2*k;
  }
  else break;
 }
}


void up(int k)
{
 long aux;
 while(k>=1 && a[k]<a[k/2])
 {
   aux=a[k/2];
   a[k/2]=a[k];
   a[k]=aux;
   k=k/2;
 }
}
int main()
{ long x,i;
 f>>n;
 for(i=1;i<=n;i++)
  f>>x,a[i]=x,up(i);
 while(n)
 {
  g<<a[1]<<" ";
  a[1]=a[n],n--;
  down(1);
 }
 f.close();
 g.close();
 return 0;
}