Cod sursa(job #2847668)

Utilizator Theodor17Pirnog Theodor Ioan Theodor17 Data 11 februarie 2022 11:06:27
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>

using namespace std;

ifstream cin("algsort.in");
ofstream cout("algsort.out");

const int NMAX = 5e5;
int v[NMAX], n;

void merge(int v[], int st, int dr){

    int mid = ((st + dr) >> 1);
    int aux[int(5e5)], k = 0;

    int i = st, j = mid + 1;

    while(i <= mid && j <= dr){

        if(v[i] < v[j])
            aux[k++] = v[i++];
        else aux[k++] = v[j++];

    }

    while(i <= mid)
        aux[k++] = v[i++];

    while(j <= dr)
        aux[k++] = v[j++];

    for(int p = 0; p < k; p++)
        v[st + p] = aux[p];

}

void ms(int v[], int st, int dr){

    if(st == dr)
        return;
    
    int mid = ((st + dr) >> 1);

    ms(v, st, mid);
    ms(v, mid + 1, dr);

    merge(v, st, dr);

}

int main(){

    ios :: sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    cin >> n;
    for(int i = 0; i < n; i++)
        cin >> v[i];

    ms(v, 0, n - 1);

    for(int i = 0; i < n; i++)
        cout << v[i] << " ";

}