Cod sursa(job #3206031)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 21 februarie 2024 14:29:06
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n, a[500005];
void merge_sort(int l, int r) {
    if (l >= r)
        return;

    vector<int> aux;
    int m = (l + r) / 2;
    merge_sort(l, m);
    merge_sort(m + 1, r);


    int i = l, j = m + 1;
    while (i <= m && j <= r) {
        if (a[i] < a[j]) {
            aux.push_back(a[i++]);
        } else {
            aux.push_back(a[j++]);
        }
    }

    while (i <= m) {
        aux.push_back(a[i++]);
    }

    while (j <= r) {
        aux.push_back(a[j++]);
    }

    for (int i = l; i <= r; i++)
        a[i] = aux[i - l];
}
int main()
{
    in >> n;
    for (int i = 1; i <= n; i++) {
        in >> a[i];
    }

    merge_sort(1, n);
    for (int i = 1; i <= n; i++) {
        out << a[i] << " ";
    }

    return 0;
}