Cod sursa(job #3249162)

Utilizator toma_ariciuAriciu Toma toma_ariciu Data 15 octombrie 2024 09:05:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;
using ll = long long;

void mergeSort(int l, int r, vector <int> &v) {
    if (l == r) {
        return;
    }
    int med = (l + r) / 2;
    mergeSort(l, med, v);
    mergeSort(med + 1, r, v);
    int i = l, j = med + 1, k = 0;
    vector <int> h(r - l + 1);
    while (i <= med || j <= r) {
        if (j > r || (i <= med && v[i] <= v[j])) {
            h[k] = v[i];
            i++;
            k++;
        }
        else {
            h[k] = v[j];
            j++;
            k++;
        }
    }
    for (int i = l; i <= r; i++) {
        v[i] = h[i - l];
    }
}

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    int n;
    fin >> n;
    vector <int> v(n);
    for (int i = 0; i < n; i++) {
        fin >> v[i];
    }
    mergeSort(0, n - 1, v);
    for (int i = 0; i < n; i++) {
        fout << v[i] << ' ';
    }
    return 0;
}