Cod sursa(job #1020818)

Utilizator vlad.florescu94FMI Florescu Vlad - Adrian vlad.florescu94 Data 2 noiembrie 2013 18:04:28
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");
long a[500001],b[500001],n;
void interclasare(long left,long mid,long right)
{long i=left,j=mid+1,k=left;
 while(i<=mid&&j<=right)
   {if(a[i]<a[j])
      {b[k]=a[i];i++;}
    else
      if(a[i]>a[j])
        {b[k]=a[j];j++;}
      else
        {b[k++]=a[i];b[k]=a[j];i++;j++;}
    k++;
   }
 while(i<=mid)
   {b[k]=a[i];i++;k++;}
 while(j<=right)
   {b[k]=a[j];j++;k++;}
 k=left;
 for(k=left;k<=right;k++)
    a[k]=b[k];
}
void msort(long st,long dr)
{long m;
 m=(st+dr)/2;
 if(st<dr)
   {
    msort(st,m);
    msort(m+1,dr);
   }
 interclasare(st,m,dr);
}
int main()
{long i;
 f>>n;
 for(i=1;i<=n;i++)
    f>>a[i];
 msort(1,n);
 for(i=1;i<=n;i++)
    g<<a[i]<<" ";
 f.close();g.close();
 return 0;
}