Cod sursa(job #1512644)

Utilizator theprdvtheprdv theprdv Data 28 octombrie 2015 13:48:34
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <stdio.h>
#include <assert.h>
#include <string.h>

#define MAXN 500002

int N, A[MAXN], B[MAXN];

void MergeSort(int A[], int B[], int l, int r){
    if (r == l)
    {
        B[l] = A[l];
        return;
    }

    int mid = (l + r) / 2;
    MergeSort(A, B, l, mid);
    MergeSort(A, B, mid + 1, r);

    int i = l, j = mid + 1;
    for (int k = l; k <= r; ++k)
        if ( j > r || B[i] < B[j] )
            A[k] = B[i++];
        else A[k] = B[j++];

    memcpy(B + l, A + l, sizeof (int) * (r - l + 1));
}


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

    scanf("%d", &N);

    for (int i = 0; i < N; ++i) scanf("%d", &A[i]);

    MergeSort(A, B, 0, N - 1);

    for (int i = 0; i < N; ++i) printf("%d ", B[i]);

    return 0;
}