Cod sursa(job #2643367)

Utilizator RaduVFVintila Radu-Florian RaduVF Data 19 august 2020 16:56:33
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <iostream>
#include <fstream>
#include <vector>

#define NMAX 500005

int A[NMAX], B[NMAX];
void MergeSort(int st, int dr) {
    if (st == dr) return;
    int mij = (st + dr) >> 1;

    MergeSort(st, mij);
    MergeSort(mij + 1, dr);

    for (int i = st, j = mij + 1, k = st; i <= mij || j <= dr; ) {
        if (j > dr || (i <= mij && A[i] < A[j])) {
            B[k++] = A[i++];
        }
        else {
            B[k++] = A[j++];
        }
    }
    for (int k = st; k <= dr; ++k) {
        A[k] = B[k];
    }
}

int main() {
    std::ifstream fin("algsort.in");
    std::ofstream fout("algsort.out");

    int n;
    fin >> n;
    for (int i = 0; i < n; ++i) fin >> A[i];
    MergeSort(0, n - 1);
    for (int i = 0; i < n; ++i) fout << A[i] << ' ';

    return 0;
}