Cod sursa(job #1588886)

Utilizator RadduFMI Dinu Radu Raddu Data 3 februarie 2016 18:09:15
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
 int n,b[500005],a[500005];
void Merge(int st,int dr)
{ int k=0,i,i1,i2,mid=(st+dr)/2;
    if (mid-st+1>1) Merge(st,mid);
    if (dr-mid>1) Merge(mid+1,dr);

    i1=st; i2=mid+1;
   while(i1<=mid && i2<=dr)
    if (a[i1]<a[i2]) b[++k]=a[i1++];
      else b[++k]=a[i2++];

  for(i=i1;i<=mid;i++) b[++k]=a[i];
  for(i=i2;i<=dr;i++)  b[++k]=a[i];

  for(i=st;i<=dr;i++)
   a[i]=b[i-st+1];
}
int main()
{ int i;
    f>>n;
    for(i=1;i<=n;i++)
     f>>a[i];

   Merge(1,n);

  for(i=1;i<=n;i++)
   g<<a[i]<<" ";
    return 0;
}