Cod sursa(job #2126161)

Utilizator alextodoranTodoran Alexandru Raul alextodoran Data 9 februarie 2018 11:56:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
#define NM 500002
using namespace std;

int n, v[NM], vaux[NM];

void sort1 (int a, int b, int k)
{
    if(b - a + 1 <= 1)
        return;
    int m = (b + a) / 2;
    sort1(a, m, k + 1);
    sort1(m + 1, b, k + 1);
    for(int i = a; i <= b; i++)
        vaux[i] = v[i];
    int p1 = a, p2 = m + 1;
    for(int i = a; i <= b; i++)
    {
        if(p1 <= m && (vaux[p1] < vaux[p2] || p2 > b))
        {
            v[i] = vaux[p1];
            p1++;
        }
        else
        {
            v[i] = vaux[p2];
            p2++;
        }
    }
}

int main()
{
    ifstream fin ("algsort.in");
    ofstream fout ("algsort.out");
    fin >> n;
    for(int i = 1; i <= n; i++)
        fin >> v[i];
    sort1(1, n, 0);
    for(int i = 1; i <= n; i++)
        fout << v[i] << " ";
    return 0;
}