Cod sursa(job #1113556)

Utilizator mucenic_b101Bogdan Mucenic mucenic_b101 Data 20 februarie 2014 18:20:35
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <fstream>
#define MAXN 500001
using namespace std;

int v[MAXN], interc[MAXN], p, i1, i2;

void merge_sort( int start, int stop ) {
    if( stop - start > 0 ) {
        int mid = ( start + stop ) >> 1;
        merge_sort( start, mid );
        merge_sort( mid + 1, stop );
        i1 = start;
        i2 = mid + 1;
        p = 0;
        while( i1 <= mid && i2 <= stop )
            if( v[i1] < v[i2] ) {
                interc[p++] = v[i1];
                ++i1;
            }
            else {
                interc[p++] = v[i2];
                ++i2;
            }
        while( i1 <= mid )
            interc[p++] = v[i1++];
        while( i2 <= stop )
            interc[p++] = v[i2++];
        for( i1 = start, i2 = 0 ; i1 <= stop ; ++i1, ++i2 )
            v[i1] = interc[i2];
    }
}

int main () {
    ifstream f( "algsort.in" );
    ofstream g( "algsort.out" );

    int n;

    f>>n;
    for( int i = 0 ; i < n ; ++i )
        f>>v[i];

    merge_sort( 0, n - 1 );

    for( int i = 0 ; i < n ; ++i )
        g<<v[i]<<" ";

    f.close();
    g.close();
    return 0;
}