Cod sursa(job #2294044)

Utilizator SemetgTemes George Semetg Data 1 decembrie 2018 20:47:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#define N_MAX 500005
using namespace std;

ifstream in { "algsort.in" };
ofstream out { "algsort.out" };

int n;
int a[N_MAX], temp[N_MAX];

void merge_sort(int stg, int drp) {
    if (stg == drp)
        return;
    
    int mij { (stg + drp) / 2 };
    merge_sort(stg, mij);
    merge_sort(mij + 1, drp);
    
    for (int i { stg }, j { mij + 1 }, k { stg }; i <= mij || j <= drp; ++k)
        if (j > drp || (i <= mij && a[i] < a[j]))
            temp[k] = a[i++];
        else
            temp[k] = a[j++];
    
    for (int i { stg }; i <= drp; ++i)
        a[i] = temp[i];
}

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] << ' ';
}