Cod sursa(job #2281850)

Utilizator AndreiSorin26012001Cirpici Andrei Sorin AndreiSorin26012001 Data 12 noiembrie 2018 20:20:50
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>
#define DIM 500005
using namespace std;

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

int n, arr[DIM], aux[DIM];

void mergeSort( int st, int dr )
{
    if( st >= dr )
        return;

    int mid = (st + dr)/2;
    mergeSort( st, mid );
    mergeSort( mid + 1, dr );

    int i = st, j = mid + 1, k = st - 1;

    while( i <= mid && j <= dr )
        if( arr[i] <= arr[j] )
            aux[++k] = arr[i++];
        else
            aux[++k] = arr[j++];

    for( ; i <= mid; i++ )
        aux[++k]= arr[i];
    for( ; j <= dr; j++ )
        aux[++k] = arr[j];

    for( int ii = st; ii <= dr; ii++ )
        arr[ii] = aux[ii];
}

int main()
{
    in>>n;
    for( int i = 1; i <= n; i++ )
        in>>arr[i];

    mergeSort(1, n);

    for( int i = 1; i <= n; i++ )
        out<<arr[i]<<" ";

    return 0;
}