Cod sursa(job #3126296)

Utilizator stefanrotaruRotaru Stefan-Florin stefanrotaru Data 6 mai 2023 14:55:29
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;

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

int n, a[500005], b[500005];

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

        mergeSort(a, st, mij);
        mergeSort(a, mij + 1, dr);

        int i = st, j = mij + 1, k = 0;

        while (i <= mij && j <= dr) {
            if (a[i] < a[j]) {
                b[++k] = a[i++];
            }
            else {
                b[++k] = a[j++];
            }
        }

        while (i <= mij) {
            b[++k] = a[i++];
        }

        while (j <= dr) {
            b[++k] = a[j++];
        }

        for (int i = st, j = 1; i <= dr; ++i, ++j) {
            a[i] = b[j];
        }
    }
}

int main()
{
    f >> n;

    for (int i = 1; i <= n; ++i) {
        f >> a[i];
    }

    mergeSort(a, 1, n);

    for (int i = 1; i <= n; ++i) {
        g << a[i] << ' ';
    }

    return 0;
}