Cod sursa(job #2988171)

Utilizator TeddyDinutaDinuta Eduard Stefan TeddyDinuta Data 3 martie 2023 18:46:23
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(int l, int r, int m, int v[]) {
    int i = l, j = m + 1;

    vector<int> aux;
    int k = 1;

    while (i <= m && j <= r) {
        if (v[i] <= v[j]) aux.push_back(v[i++]);
        else aux.push_back(v[j++]);
    }

    while (i <= m)
        aux.push_back(v[i++]);
    
    while (j <= r)
        aux.push_back(v[j++]);
    
    for (int i = 0; i < aux.size(); i++)
        v[l + i] = aux[i];
}

void merge_sort(int l, int r, int v[]) {
    if (l >= r) return;
    int m = (l + r) / 2;
    merge_sort(l, m, v);
    merge_sort(m + 1, r, v);
    merge(l, r, m, v);
}
int main() {

    in>>n;
    for (int i = 1; i <= n; i++)
        in>>a[i];
    
    merge_sort(1, n, a);

    for (int i = 1; i <= n; i++)
        out<<a[i]<<" ";
    out<<'\n';
    return 0;
}