Cod sursa(job #2553579)

Utilizator Alin_StanciuStanciu Alin Alin_Stanciu Data 22 februarie 2020 10:02:39
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb

#include <iostream>
#include <fstream>

using namespace std;

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

int n, cnt, A[500001], Aux[500001];

void Sort(int st, int dr)
{
    if (st == dr)
        return;
    int mij = (st + dr) / 2;
    Sort(st, mij);
    Sort(mij + 1, dr);
    int i = st, j = mij + 1;
    cnt = 0;
    while (i <= mij && j <= dr)
    {
        if (A[i] < A[j])
            Aux[++cnt] = A[i++];
        else Aux[++cnt] = A[j++];
    }
    while (i <= mij)
        Aux[++cnt] = A[i++];
    while (j <= dr)
        Aux[++cnt] = A[j++];
    for (int i = 1; i <= dr - st + 1; ++i)
        A[st + i - 1] = Aux[i];
}

int main()
{
    fin >> n;
    for (int i = 1; i <= n; ++i)
        fin >> A[i];
    Sort(1, n);
    for (int i = 1; i <= n; ++i)
        fout << A[i] << " ";

    return 0;
}