Cod sursa(job #813980)

Utilizator dsfm_danielaasd mghd dsfm_daniel Data 15 noiembrie 2012 19:43:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
#include<algorithm>
#define NMAX 500000
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");

int v[NMAX],n,a[NMAX];

void merge_sort(int l, int r)
{
    int m, i, j, k;
    m = (l+r)/2;

    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 && v[i] < v[j]) )
            a[ k++ ] = v[ i++ ];
        else
            a[ k++ ] = v[ j++ ];
    for( k = l; k <= r; k++ )
        v[k] = a[k];
}


int main (void)
{
    in>>n;
    for(int i=0;i<n;++i)
        in>>v[i];
    in.close();
    merge_sort(0,n-1);

    for(int i=0;i<n;++i)
        out<<v[i]<<" ";
    out.close();
    return 0;
}