Cod sursa(job #2387217)

Utilizator DovlecelBostan Andrei Dovlecel Data 24 martie 2019 14:04:03
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int N=500005;
int n,v[N],aux[N];

void citire()
{
    in>>n;
    for(int i=1;i<=n;i++)
        in>>v[i];
}

void afisare()
{
    for(int i=1;i<=n;i++)
        out<<v[i]<<' ';
}

void Merge(int st,int dr)
{
    int m=(st+dr)/2;
    for(int i=st,j=m+1,k=st;j<=dr || i<=m;)
    {
        if(j>dr || (i<=m && v[i]<=v[j]))
            aux[k++]=v[i++];
        else
            aux[k++]=v[j++];
    }
    for(int i=st;i<=dr;i++)
        v[i]=aux[i];
}
void mergesort(int st,int dr)
{
    if(st==dr)
        return;
    int m=(st+dr)/2;
    mergesort(st,m);
    mergesort(m+1,dr);
    Merge(st,dr);
}

int main()
{
    citire();
    mergesort(1,n);
    afisare();
    return 0;
}