Cod sursa(job #1677995)

Utilizator GinguIonutGinguIonut GinguIonut Data 6 aprilie 2016 22:16:49
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <fstream>

#define nMax 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, v[nMax], aux[nMax];
void read()
{
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>v[i];
}
void mergesort(int st, int dr)
{
    if(st==dr)
        return;

    int mid=st+(dr-st)/2;
    mergesort(st, mid);
    mergesort(mid+1, dr);

    for(int ii=st, jj=mid+1, poz=st-1;ii<=mid || jj<=dr;)
    {
        if((v[ii]<v[jj] && ii<=mid) || jj>dr)
        {
            aux[++poz]=v[ii];
            ii++;
        }
        else
        {
            aux[++poz]=v[jj];
            jj++;
        }
    }

    for(int i=st;i<=dr;i++)
        v[i]=aux[i];
}
void write()
{
    for(int i=1;i<=n;i++)
        fout<<v[i]<<" ";
}
int main()
{
    read();
    mergesort(1, n);
    write();
    return 0;
}