Cod sursa(job #2469558)

Utilizator WilIiamperWilliam Damian Balint WilIiamper Data 7 octombrie 2019 18:32:31
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#define nmax 500050

using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int n, a[nmax], b[nmax];
void interclasare(long l, long m, long r) {
    int i, j, k = 1;
    for (i = l, j = m+1; i <= m || j <= r; )
        if (j > r || (i <= m && a[i] < a[j]))
            b[k++] = a[i++];
        else
            b[k++] = a[j++];
        k = 1;
        for (i = l; i <= r; i++)
            a[i] = b[k++];
}
void mergesort(long st, long dr) {
    if (st < dr) {
        long mid = st + (dr-st)/2;
        mergesort(st, mid);
        mergesort(mid+1, dr);
        interclasare(st, mid, dr);
    }
}
int main()
{
    fin >> n;
    for (int i = 1; i <= n; i++)
        fin >> a[i];
    mergesort(1, n);
    for (int i = 1; i <= n; i++)
        fout << a[i] << " ";
    return 0;
}