Cod sursa(job #2051784)

Utilizator biaiftimeIftime Bianca biaiftime Data 29 octombrie 2017 15:42:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define Nmax 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[Nmax],n;
void Read(int &n,int a[Nmax])
{
    int i;
    fin>>n;
    for(i=1;i<=n;i++)
    fin>>a[i];
}
void Merge(int s,int m,int d)
{
    int i=s,j=m+1;
    int b[Nmax],k=0,cnt;
    while(i<=m&&j<=d)
    if(a[i]<a[j]){b[++k]=a[i];++i;}
    else {b[++k]=a[j];++j;}
    while(i<=m){b[++k]=a[i];++i;}
    while(j<=d){b[++k]=a[j];++j;}
    cnt=1;
    for(i=s;i<=d;i++)
    {a[i]=b[cnt]; ++cnt;}
}
void MergeSort(int s,int d)
{
    if(s<d)
    {
        int m=(s+d)/2;
        MergeSort(s,m);
        MergeSort(m+1,d);
        Merge(s,m,d);
    }
}
void Print(int n,int a[Nmax])
{
    int i;
    for(i=1;i<=n;i++)
    fout<<a[i]<<" ";
}
int main()
{
     Read(n,a);
     MergeSort(1,n);
     Print(n,a);
    return 0;
}