Cod sursa(job #1239771)

Utilizator TimitocArdelean Andrei Timotei Timitoc Data 9 octombrie 2014 19:29:43
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <iostream>
#include <cstdio>
#define MAXN 500005

using namespace std;

int n, a[MAXN];

void merge_sort(int x[MAXN], int l, int r)
{
    if (r-l <= 1)
        return;
    int mid = (l + r)/2, i, j, k;
    merge_sort(x, l, mid);
    merge_sort(x, mid, r);
    int g[MAXN];
    for (i = l, j = mid, k = l; (i<mid || j<r); k++)
        if (j>=r || (i<mid && a[i] < a[j]))
            g[k] = a[i++];
        else
            g[k] = a[j++];
    for (int i = l; i < r; i++)
        x[i] = g[i];
}

int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    scanf("%d", &n);
    for (int i = 0; i < n; ++i)
        scanf("%d", &a[i]);
    merge_sort(a, 0, n);
    for (int i = 0; i< n; i++)
        printf("%d ", a[i]);

    return 0;
}