Cod sursa(job #240559)

Utilizator mihai.cuculiciCuculici Mihail mihai.cuculici Data 7 ianuarie 2009 22:10:22
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include<fstream>
#define NMAX 500010
using namespace std;

int v[NMAX],n,i;

void heapsort(int a[], int lo,int hi)
{
     if(hi>lo){
       int mid=(lo+(hi-lo)/2)-1;
       while(mid+lo>=lo)
       {
          if((a[mid+lo]>a[2*mid+lo])&&(2*mid+lo<=hi))
          { 
            a[mid+lo]+=a[2*mid+lo];
            a[2*mid+lo]=a[mid+lo]-a[2*mid+lo];
            a[mid+lo]=a[mid+lo]-a[2*mid+lo];
          }  
          if((a[mid+lo]>a[2*mid+1+lo])&&(2*mid+1+lo<=hi))
          { 
            a[mid+lo]+=a[2*mid+1+lo];
            a[2*mid+1+lo]=a[mid+lo]-a[2*mid+1+lo];
            a[mid+lo]=a[mid+lo]-a[2*mid+1+lo];         
          }  
          mid--;        
       }
       heapsort(a,lo+1,hi);
     }
}

int main()
{
    ifstream f ("algsort.in");
    ofstream g ("algsort.out");
    f>>n;
    for(i=1;i<=n;i++) f>>v[i];
    heapsort(v,1,n);
    for(i=1;i<=n;i++) g<<v[i]<<" ";
    f.close();
    g.close();
    return 0;
}