Cod sursa(job #1687786)

Utilizator razvan242Zoltan Razvan-Daniel razvan242 Data 13 aprilie 2016 08:35:13
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

using namespace std;

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

const int NMAX = 5e5 + 1;

int n, a[NMAX], b[NMAX];

void mergesort(int lo, int hi) {
    int mid = (lo + hi) / 2;
    if (lo == hi)
        return;
    mergesort(lo, mid);
    mergesort(mid + 1, hi);

    for (int i = lo, j = mid + 1, k = lo; i <= mid || j <= hi; ) {
        if (j > hi || (i <= mid && a[i] < a[j]))
            b[k++] = a[i++];
        else
            b[k++] = a[j++];
    }
    for (int i = lo; i <= hi; ++i)
        a[i] = b[i];
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> a[i];
    }
    mergesort(1, n);
    for (int i = 1; i <= n; ++i) {
        fout << a[i] << ' ';
    }
    return 0;
}