Cod sursa(job #3287978)

Utilizator cristia_razvanCristia Razvan cristia_razvan Data 20 martie 2025 10:28:52
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> a;

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

void mergeSort(vector<int>& a, int st, int dr) {
    if (st < dr) {
        int mid = (st + dr) >> 1;
        mergeSort(a, st, mid);
        mergeSort(a, mid + 1, dr);

        int l, r;
        vector<int> tmp;
        l = st, r = mid + 1;
        while (l <= mid && r <= dr)
            if (a[l] < a[r])
                tmp.push_back(a[l++]);
            else
                tmp.push_back(a[r++]);
        while (l <= mid) tmp.push_back(a[l++]);
        while (r <= dr) tmp.push_back(a[r++]);
        for (int i = st, p = 0; i <= dr; i++, p++) a[i] = tmp[p];
    }
}

int main() {
    fin >> n;
    a = vector<int>(n);
    for (int i = 0; i < n; i++) fin >> a[i];

    mergeSort(a, 0, n - 1);
    for (auto i : a) fout << i << '\n';

    fin.close();
    fout.close();
    return 0;
}