Cod sursa(job #1070764)

Utilizator IonMosnoiIon Mosnoi IonMosnoi Data 1 ianuarie 2014 22:03:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#include<algorithm>
const unsigned maxn = 500100;
using namespace std;
   unsigned  N;
  unsigned  A[maxn],B[maxn];

void merge_sort(int l, int r)
{
    int m = (l + r) >> 1, i, j, k;
    if (l == r) return;
    merge_sort(l, m);
    merge_sort(m + 1, r);
    for (i=l, j=m+1, k=l; i<=m || j<=r; )
        if (j > r || (i <= m && A[i] < A[j]))
            B[k++] = A[i++];
        else
            B[k++] = A[j++];
    for (k = l; k <= r; k++) A[k] = B[k];
}

main(){
  ifstream fin("algsort.in");
  ofstream fout("algsort.out"); 

   fin>>N;
  for(int i=1;i<=N;i++)fin>>A[i];
  
  merge_sort(1,N);
  for(int i=1;i<=N;i++)fout<<A[i]<<" ";
  
 
  fin.close(); fout.close();  
}