Cod sursa(job #3322084)

Utilizator BaraianTudorBaraian Tudor Stefan BaraianTudor Data 12 noiembrie 2025 17:59:44
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <cctype>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");

int a[500005],n,l_ar[250005],r_ar[250005];

void merge(int l, int r) {
	int mij = (l + r) / 2;
	int l_size = 0, r_size = 0, l_ind = 1, r_ind = 1;
	for (int i = l; i <= mij; i++)l_ar[++l_size] = a[i];
	for (int i = mij + 1; i <= r; i++)r_ar[++r_size] = a[i];
	int ind = l;
	for (;l_ind<=l_size && r_ind<=r_size;ind++) {
		if (l_ar[l_ind] < r_ar[r_ind]) {
			a[ind] = l_ar[l_ind++];
		}
		else {
			a[ind] = r_ar[r_ind++];
		}
	}
	if (l_ind > l_size) {
		while (r_ind <= r_size) {
			a[ind++] = r_ar[r_ind++];
		}
	}
	else {
		while (l_ind <= l_size) {
			a[ind++] = l_ar[l_ind++];
		}
	}
	
}

void merge_sort(int l, int r) {
	if (l >= r)return;
	int mij = (l + r) / 2;
	merge_sort(l, mij);
	merge_sort(mij + 1, r);
	merge(l, r);
}

int main()
{
	in >> n;
	for (int i = 1; i <= n; i++) {
		in >> a[i];
	}
	merge_sort(1, n);
	for (int i = 1; i <= n; i++) {
		out << a[i] << ' ';
	}
	return 0;
}