Cod sursa(job #3317319)

Utilizator miHai231Mihai Mandragiu miHai231 Data 23 octombrie 2025 09:51:34
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <fstream>
using namespace std;

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

int aux[500001], v[500001];

void interclass(int v[], int st, int dr)
{
    int m = (st + dr) / 2, i = st, j = m + 1, k = st;
    while (i <= m && j <= dr)
    {
        if (v[i] <= v[j])
            aux[k++] = v[i++];
        else
            aux[k++] = v[j++];
    }
    while (i <= m)
        aux[k++] = v[i++];
    while (j <= dr)
        aux[k++] = v[j++];
    for (int p = st; p <= dr; p++)
        v[p] = aux[p];
}

void merge_sort(int v[], int st, int dr)
{
    if (st >= dr)
        return;
    int m = (st + dr) / 2;
    merge_sort(v, st, m);
    merge_sort(v, m + 1, dr);
    interclass(v, st, dr);
}

int main()
{
    int n;
    in >> n;
    for (int i = 1; i <= n; i++)
        in >> v[i];
    merge_sort(v, 1, n);
    for (int i = 1; i <= n; i++)
        out << v[i] << " ";
    return 0;
}