Cod sursa(job #662674)

Utilizator I.AlexandruIlie Alexandru I.Alexandru Data 16 ianuarie 2012 21:49:22
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<iostream>
#define maxn 500005
using namespace std;

long i, n, a[maxn], b[maxn];

void merge(long lo, long m, long hi)
{long i, j, k;

for(i=lo; i<=hi; i++)
   b[i]=a[i];

i=lo; 
j=m+1; 
k=lo;

while(i<=m && j<=hi)
     if(b[i]<=b[j])
       a[k++]=b[i++];
     else a[k++]=b[j++];

while(i<=m)
     a[k++]=b[i++];
}

void mergesort(long lo, long hi)
{if(lo<hi)
   {int m=lo+(hi-lo)/2;
    mergesort(lo, m);
    mergesort(m+1, hi);
    merge(lo, m, hi);
   }
}

int main()
{freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
scanf("%d", &n);

for(i=0; i<n; i++)
   scanf("%d", &a[i]);
	
mergesort(0, n-1);

for(i=0; i<n; i++)
   printf("%d ", a[i]);

return 0;
}