Cod sursa(job #2292856)

Utilizator stan_flaviusStan Flavius Stefan stan_flavius Data 30 noiembrie 2018 08:49:17
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#define nmax 500001

using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

int a[nmax],n;


void InterCls(int v[],int l,int m, int r)
{ int i,j,k=0;
  int aux[nmax];
  i=l;
  j=m+1;
  while(i<=m && j<=r)
        if(v[i]<=v[j])
            aux[k++]=v[i++];
        else
           aux[k++]=v[j++];


  while(i<=m)
       aux[k++]=v[i++];
  while(j<=r)
       aux[k++]=v[j++];
  int ct=0;
  for(i=l; i<=r; i++)
      v[i]=aux[ct++];
}

void MergeSort(int v[],int l,int r)
{ if(l<r)
    {int m=(l+r)/2;
     MergeSort(v,l,m);
     MergeSort(v,m+1,r);
     InterCls(v,l,m,r);
    }
}

int main()
{ fin>>n;
  int i;
  for(i=1; i<=n; i++)
       fin>>a[i];
  MergeSort(a,1,n);
  for(i=1; i<=n; i++) fout<<a[i]<<" ";
    return 0;
}