Cod sursa(job #3302716)

Utilizator ArdeleanOficialAlexandru ArdeleanOficial Data 10 iulie 2025 12:45:18
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 kb
#include <fstream>
#include <vector>

using namespace std;

void merge(vector<int>& a, vector<int>& b, int left, int mid, int right) {
    int i = left, j = mid + 1, k = left;
    while (i <= mid && j <= right) {
        if (a[i] < a[j]) {
            b[k++] = a[i++];
        } else {
            b[k++] = a[j++];
        }
    }
    while (i <= mid) {
        b[k++] = a[i++];
    }
    while (j <= right) {
        b[k++] = a[j++];
    }
    for (i = left; i <= right; i++) {
        a[i] = b[i];
    }
}

void merge_sort(vector<int>& a, vector<int>& b, int left, int right) {
    if (left < right) {
        int mid = (left + right) / 2;
        merge_sort(a, b, left, mid);
        merge_sort(a, b, mid + 1, right);
        merge(a, b, left, mid, right);
    }
}

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

    int n;
    fin >> n;
    vector<int> a(n);
    for (int i = 0; i < n; i++) {
        fin >> a[i];
    }
    vector<int> b(n);
    merge_sort(a, b, 0, n - 1);
    for (int i = 0; i < n; i++) {
        fout << a[i] << " ";
    }
    fout << endl;
    return 0;
}