Cod sursa(job #3311992)

Utilizator PatrikKev75Szucs Patrik - Kevin PatrikKev75 Data 25 septembrie 2025 12:43:30
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>

void fesul(int *t, int s, int mid, int n)
{
    int *tmp = new int[n - s + 1], m = 0, indxL = s, indxR = mid + 1;

    while (indxL <= mid && indxR <= n)
        if (t[indxL] > t[indxR])
            tmp[m++] = t[indxR++];
        else
            tmp[m++] = t[indxL++];

    while (indxL <= mid)
        tmp[m++] = t[indxL++];

    while (indxR <= n)
        tmp[m++] = t[indxR++];

    for (int i = 0; i < m; i++)
        t[s + i] = tmp[i];

    delete[] tmp;
    return;
}

// SORT--------------------------------

void merge(int *t, int s, int n)
{
    if (s >= n)
        return;

    int mid = (s + n) / 2;

    merge(t, s, mid);
    merge(t, mid + 1, n);
    fesul(t, s, mid, n);

    return;
}

// MAIN -------------------------------

int main()
{
    int n;

    std::ifstream in("algsort.in");
    in >> n;

    int *t = new int[n];
    for (int i = 0; i < n; i++)
        in >> t[i];
    in.close();

    merge(t, 0, n - 1);

    std::ofstream out("algsort.out");
    for (int i = 0; i < n; i++)
        out << t[i];
    out.close();

    delete[] t;
    return 0;
}