Cod sursa(job #2723023)

Utilizator beingsebiPopa Sebastian beingsebi Data 13 martie 2021 14:48:27
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <bits/stdc++.h>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
// #define f cin
// #define g cout
// code-runner.runInTerminal
int n, v[500001], ax[500001];
void merge(int a, int b, int c, int d)
{
    int i = a, j = c, r = 1;
    while (i <= b && j <= d)
        if (v[i] < v[j])
            ax[r] = v[i], r++, i++;
        else
            ax[r] = v[j], r++, j++;
    while (i <= b)
        ax[r] = v[i], r++, i++;
    while (j <= d)
        ax[r] = v[j], r++, j++;
    for (int i = 1, j = a; j <= d; i++, j++)
        v[j] = ax[i];
}
void merge_sort(int st, int dr)
{
    if (dr - st < 1)
        return;
    int mid = (st + dr) / 2;
    merge_sort(st, mid);
    merge_sort(mid + 1, dr);
    merge(st, mid, mid + 1, dr);
}
int main()
{
    f >> n;
    for (int i = 1; i <= n; i++)
        f >> v[i];
    merge_sort(1, n);
    for (int i = 1; i <= n; i++)
        g << v[i] << " ";
    return 0;
}