Cod sursa(job #2080912)

Utilizator RaduIonescuRadu Ionescu RaduIonescu Data 3 decembrie 2017 17:26:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream in ("algsort.in");
ofstream out ("algsort.out");

const int N=500001;

int v[N],i,n,Q[N];

void mergesort(int st, int dr)
{
    int i,j,k;
    if(st == dr)
        return;

    int mij = (st+dr) / 2;

    mergesort(st, mij);
    mergesort(mij+1, dr);

    /// a[] = v[st, mij]
    /// b[] = v[mij+1, dr]
    i=st; j=mij+1; k=1;

    while (i<=mij && j<=dr)
        if (v[i]<=v[j]) Q[k++]=v[i++];
        else Q[k++]=v[j++];

    while (i<=mij) Q[k++]=v[i++];
    while (j<=dr) Q[k++]=v[j++];

    for (i=st;i<=dr;++i) v[i]=Q[i-st+1];
}

int main()
{
    in>>n;
    for (i=1;i<=n;++i) in>>v[i];
    mergesort(1,n);
    for(i=1; i<=n; ++i)
        out<<v[i]<<" ";

    return 0;
}