Cod sursa(job #2158289)

Utilizator bpalaniciPalanici Bogdan bpalanici Data 10 martie 2018 11:48:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

int n;
int v[500005];
int aux[500005];

void Sort(int left = 1, int right = n) {
    if (left == right) return;
    int m = (left + right) >> 1;
    Sort(left, m);
    Sort(m + 1, right);
    int i, i1, k = left;
    for (i = left, i1 = m + 1; i <= m && i1 <= right;)
        if (v[i] < v[i1])
            aux[k++] = v[i++];
        else aux[k++] = v[i1++];
    while (i <= m)
        aux[k++] = v[i++];
    while (i1 <= right)
        aux[k++] = v[i1++];
    for (k = left; k <= right; k++)
        v[k] = aux[k];
}

int main() {
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    ios_base::sync_with_stdio(0);
    cin >> n;
    for (int i = 1; i <= n; i++)
        cin >> v[i];
    Sort();
    for (int i = 1; i <= n; i++)
        cout << v[i] << " ";
}