Cod sursa(job #3208997)

Utilizator md_kosminGlod Cosmin Stefan md_kosmin Data 1 martie 2024 17:48:31
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>

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

int n, v[500001], aux[500001];

void mergeSort(int v[], int st, int dr)
{
    if (st < dr)
    {
        int mij = st + (dr - st) / 2;
        mergeSort(v, st, mij);
        mergeSort(v, mij + 1, dr);

        int ind = 0, i = st, j = mij + 1;
        while (i <= mij && j <= dr)
        {
            if (v[i] < v[j])
                aux[++ind] = v[i++];
            else
                aux[++ind] = v[j++];
        }
        while (i <= mij)
            aux[++ind] = v[i++];
        while (j <= dr)
            aux[++ind] = v[j++];

        for (int i = st, j = 1; i <= dr; ++i, ++j)
            v[i] = aux[j];
    }
}


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

    mergeSort(v, 1, n);

    for (int i = 1; i <= n; ++i)
        fout << v[i] << ' ';
    return 0;
}