Cod sursa(job #1752181)

Utilizator MateiMCCiurezu Matei MateiMC Data 2 septembrie 2016 22:04:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include <iostream>
#include <fstream>
#define nr 500002
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
long n, A[nr], B[nr];

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()
{
    fin>>n;
    for(long i=1; i<=n; i++){
        fin>>A[i];
    }

    merge_sort( 1, n );

    for(long i=1; i<=n; i++){
        fout<<A[i]<<" ";
    }

    return 0;
}