Cod sursa(job #1257097)

Utilizator delta_wolfAndrei Stoica delta_wolf Data 7 noiembrie 2014 11:12:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <cstdio>
using namespace std;
int i,N, A[500010], B[500010];
void merge_sort(int l, int r)
{
    int m = (l + r) >> 1, i, j, k;
    if (l == r) return;
    merge_sort(l, m);
    merge_sort(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);
    scanf("%d",&N);
    for(i=1;i<=N;i++)
    scanf("%d",&A[i]);
    merge_sort(1,N);
    for(i=1;i<=N;i++)
        printf("%d ",B[i]);
    return 0;
}