Cod sursa(job #1801543)

Utilizator OFY4Ahmed Hamza Aydin OFY4 Data 9 noiembrie 2016 10:07:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>

#define nMax 500007

using namespace std;

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

int v1[nMax], v2[nMax], n;

void mergeSort(int st, int dr)
{
    if(st >= dr)
        return;

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

    int nr = 0;
    for(int i = st, j = mid + 1; i <= mid || j <= dr; )
    {
        if(i <= mid && j <= dr)
        {
            if(v1[i] < v1[j])
            {
                v2[++nr] = v1[i++];
            }
            else
            {
                v2[++nr] = v1[j++];
            }
        }
        else if(i <= mid)
        {
            v2[++nr] = v1[i++];
        }
        else
        {
            v2[++nr] = v1[j++];
        }
    }
    for(int i = 1; i <= nr; ++i)
    {
        v1[st + i - 1] = v2[i];
    }
}

int main()
{
    in >> n;
    for(int i = 1; i <= n; ++i)
    {
        in >> v1[i];
    }

    mergeSort(1, n);

    for(int i = 1; i <= n; ++i)
    out << v1[i] << " ";
}