Cod sursa(job #1789541)

Utilizator MoodyFaresFares Mohamad MoodyFares Data 27 octombrie 2016 09:29:32
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

const int NMAX = 500000;
using namespace std;

ifstream cin ( "algsort.in" );
ofstream cout ( "algsort.out" );

int v[NMAX+5], inter[NMAX+5];
void my_merge(int st, int dr){
    if ( st == dr )
        return ;
    int mid = ( st + dr ) / 2;
    my_merge ( st, mid );
    my_merge ( mid + 1, dr );
    int k = 0, i = st, j = mid + 1;
    while ( i <= mid && j <= dr ){
        if ( v[j] < v[i] )
            inter[++k] = v[j++];
        else
            inter[++k] = v[i++];
    }
    while ( i <= mid ) {
        inter[++k] = v[i];
        ++i;
    }
    while ( j <= dr ) {
        inter[++k] = v[j];
        ++j;
    }
    for ( i = st; i <= dr; i ++ )
        v[i] = inter[i-st+1];
}

int main() {
    int n;
    cin >> n;
    for ( register int i = 1 ; i <= n ; ++ i )
        cin >> v[i];
    my_merge ( 1, n );
    for ( register int i = 1 ; i <= n ; ++ i )
        cout << v[i] << " ";
    return 0;
}