Cod sursa(job #2493221)

Utilizator DysKodeTurturica Razvan DysKode Data 16 noiembrie 2019 10:20:57
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.23 kb
#include <queue>
#include <fstream>
#include <iostream>

using namespace std;

int v[500010], aux[500010], i, j, n;

void merge_sort( int st, int dr )
{
    if( dr <= st )
        return;
    int mij = (st + dr) / 2;
    merge_sort(st, mij);
    merge_sort(mij+1, dr);
    int ps = st, pd = mij + 1;
    int i = 1;
    while( ps <= mij || pd <= dr )
    {
        if( ps <= mij && pd <= dr )
        {
            if( v[ps] <= v[pd] )
            {
                aux[ i ] = v[ps];
                ps++;
            }
            else
            {
                aux[ i ] = v[pd];
                pd++;
            }
        }
        else if( ps <= mij )
        {
            aux[ i ] = v[ps];
            ps++;
        }
        else
        {
            aux[ i ] = v[pd];
            pd++;
        }
        i++;
    }
    for(int i = st ; i <= dr ; i++)
    {
        v[ i ] = aux[ i - st + 1 ];
    }
}


int main()
{
    ifstream cin("algsort.in");
    ifstream cout("algsort.out");
    cin >> n;
    for(int i = 1 ; i <= n ; i++)
    {
        cin >> v[i];
    }
    merge_sort(1, n);
    for(int i = 1 ; i <= n ; i++)
    {
        cout << v[i] << ' ';
    }

    return 0;
}