Cod sursa(job #1669918)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 31 martie 2016 11:25:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <fstream>

using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500001],n,i,m;
void merge(int,int,int);
void merge_sort(int low,int high)
{
 int mid;
 if(low<high)
 {
  mid = low + (high-low)/2; //This avoids overflow when low, high are too large
  merge_sort(low,mid);
  merge_sort(mid+1,high);
  merge(low,mid,high);
 }
}
void merge(int low,int mid,int high)
{
 int h,i,j,b[500001],k;
 h=low;
 i=low;
 j=mid+1;
 while((h<=mid)&&(j<=high))
  if(a[h]<=a[j]) b[i++]=a[h++];
  else b[i++]=a[j++];
 if(h>mid)
    for(k=j;k<=high;k++)
        b[i++]=a[k];
 else
    for(k=h;k<=mid;k++)
        b[i++]=a[k];
 for(k=low;k<=high;k++) a[k]=b[k];
}
int main()
{
    f>>n; for(i=1;i<=n;i++) f>>a[i];
    merge_sort(1,n);
    for(i=1;i<=n;i++) g<<a[i]<<' ';
    return 0;
}