Cod sursa(job #2279479)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 9 noiembrie 2018 16:51:31
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <cstdio>
using namespace std;

#define NMAX 500001

int V[ NMAX ];
int A[ NMAX ];

void merge_sort( int st, int dr ){

    if ( st >= dr ) return ;

    int mid = ( st + dr ) / 2;
    int i, j, k = st;
    i = st; j = mid + 1;

    merge_sort( st, mid );
    merge_sort( mid + 1, dr );

    while ( ( i <= mid ) || ( j <= dr ) ) {
        if ( ( j > dr ) || ( i <= mid && V[ i ] < V[ j ] ) ) A[ k++ ] = V[ i++ ];
        else A[ k++ ] = V[ j++ ];
    }

    for ( i = st; i <= dr; ++i )
        V[ i ] = A[ i ];

}

int main () {

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

    int n, i;

    scanf( "%d", &n );
    for ( i = 1; i <= n; ++i ) scanf( "%d", &V[ i ] );

    merge_sort( 1, n );
    for( i = 1; i <= n; ++i ) printf( "%d ", V[ i ] );

    return 0;

}