Cod sursa(job #3144870)

Utilizator patrick_burasanPatrick Burasan patrick_burasan Data 11 august 2023 00:26:36
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int n, v[500005], u[500005];

inline void merge(int *A, int *B, int const &st, int const &mid, int const &dr) {
    int i = st, j = mid + 1, k = st - 1;

    while (i <= mid && j <= dr) 
        if (A[i] < A[j])
            B[++k] = A[i++];
        else
            B[++k] = A[j++];
    for (; i <= mid; i++) B[++k] = A[i];
    for (; j <= dr; j++) B[++k] = A[j];
    for (i = st; i <= dr; i++) A[i] = B[i];
}

inline void mergeSort(int *A, int *B, int const &st, int const &dr) {
    if (st < dr) {
        int mid = (st + dr) >> 1;
        mergeSort(A, B, st, mid);
        mergeSort(A, B, mid + 1, dr);
        merge(A, B, st, mid, dr);
    }
}

int main() {
    fin >> n;
    for (int i = 0; i < n; i++)
        fin >> v[i];
    mergeSort(v, u, 0, n - 1);
    for (int i = 0; i < n; i++)
        fout << v[i] << ' ';
    fout << '\n';
    fin.close();
    fout.close();
    return 0;
}