Cod sursa(job #3137768)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 14 iunie 2023 19:53:27
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

const int Nmax = 500005;

int a[Nmax], aux[Nmax], n;

void mergeSort(int left, int right) {
    if(left >= right) {
        return;
    }
    int mid = (left + right) / 2;
    mergeSort(left, mid);
    mergeSort(mid + 1, right);
    
    int i = left, j = mid + 1, p = 1;
    
    while(i <= mid && j <= right) {
        if(a[i] < a[j]) {
            aux[p++] = a[i++];
        }
        else {
            aux[p++] = a[j++];
        }
    }

    while(i <= mid) {
        aux[p++] = a[i++];
    }

    while(j <= right) {
        aux[p++] = a[j++];
    }

    for(i = 1; i < p; i++) {
        a[left + i - 1] = aux[i];
    }
}

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    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] << " ";
    }
    fout << "\n";
}