Cod sursa(job #1623974)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 1 martie 2016 23:11:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <cstdio>
using namespace std;

int v[500005];
int c[500005];

void merge_sort( int st, int dr ){


    if( st >= dr ) return ;

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

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

    k = st;
    i = st;
    j = mid + 1;

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

    for( i = st; i < k; ++i )
        v[i] = c[i];


}

int main()
{


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

    int n, i, j;

    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;
}