Cod sursa(job #1506598)

Utilizator MayuriMayuri Mayuri Data 20 octombrie 2015 20:17:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <cstdio>

using namespace std;

int a[500005], b[500005];

void solve(int l, int r) {
    int m = (l + r) / 2,i,j,k;
    if(l == r) return ;
    solve(l, m);
    solve(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() {
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    int n;
    scanf("%d", &n);

    for(int i = 1; i <= n; ++ i) {
        scanf("%d", &a[i]);
    }
    solve(1, n);
    for(int i = 1; i <= n; ++ i) {
        printf("%d ", a[i]);
    }

    return 0;
}