Cod sursa(job #2897645)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 4 mai 2022 14:18:55
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <bits/stdc++.h>

typedef long long ll;

using namespace std;

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

int n, a[500005];

void mergeArr(int l, int r) {
    int m = l + (r - l) / 2;
    vector<int> newArr;

    int lidx = l, ridx = m+1;
    while(lidx <= m && ridx <= r) {
        if(a[lidx] < a[ridx]) {
            newArr.push_back(a[lidx]);
            lidx++;
        } else {
            newArr.push_back(a[ridx]);
            ridx++;
        }
    }

    while(lidx <= m) {
        newArr.push_back(a[lidx]);
        lidx++;
    }

    while(ridx <= r) {
        newArr.push_back(a[ridx]);
        ridx++;
    }

    for(int i = l; i <= r; i++) {
        a[i] = newArr[i-l];
    }
}

void mergeSort(int l, int r) {
    if(l == r) return;

    int m = l + (r - l) / 2;
    mergeSort(l, m);
    mergeSort(m+1, r);

    mergeArr(l, r);
}

int main() {
    cin >> n;
    for(int i = 1; i <= n; i++) cin >> a[i];


    mergeSort(1, n);
    for(int i = 1; i <= n; i++) cout << a[i] << ' ';
    cout << '\n';
}