Cod sursa(job #1356651)

Utilizator pulseOvidiu Giorgi pulse Data 23 februarie 2015 15:19:37
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 500010;

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

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

void mergeSort(int l, int r)
{
    if (l == r) return;
    int m = (l + r) >> 1, i, j, k;
    mergeSort(l, m);
    mergeSort(m + 1, r);
    for (i = l, j = m + 1, k = l; i <= m || j <= r;)
    {
        if ((j > r) || (i <= m && a[i] < a[j]))
            b[k++] = a[i++];
        else
            b[k++] = a[j++];
    }
    for (k = l; k <= r; ++k) a[k] = b[k];
}

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;
}