Cod sursa(job #3341445)

Utilizator Denis2Baran Denis-Constantin Denis2 Data 19 februarie 2026 16:44:11
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
using namespace std;

void merge_halves(vector<int> &v, int left, int right) {
	int mid = (left + right) / 2;
	vector<int> aux;
	int i = left, j = mid + 1;

	while (i <= mid && j <= right) {
		if (v[i] <= v[j]) {
			aux.push_back(v[i]);
			i++;
		} else {
			aux.push_back(v[j]);
			j++;
		}
	}

	while (i <= mid) {
		aux.push_back(v[i]);
		i++;
	}

	while (j <= right) {
		aux.push_back(v[j]);
		j++;
	}

	for (int k = left; k <= right; k++) {
		v[k] = aux[k - left];
	}
}

void merge_sort(vector<int> &v, int left, int right) {
	if (left >= right)
		return;
	int mid = (left + right) / 2;

	merge_sort(v, left, mid);
	merge_sort(v, mid + 1, right);
	merge_halves(v, left, right);
}

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

    int n;
    cin >> n;

    vector<int> a(n), temp(n);
    for (int i = 0; i < n; i++)
        cin >> a[i];

    merge_sort(a, 0, n - 1);
    for (int i = 0; i < n; i++)
        cout << a[i] << " ";

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