Cod sursa(job #2749035)

Utilizator muiepulicimatacutactu muiepulici Data 4 mai 2021 18:32:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

int v[500001];
int temp[500001];

void sort(int* v, int st, int dr) {
	if (st == dr)
		return;

	int mij = st + (dr - st) / 2;

	sort(v, st, mij);
	sort(v, mij + 1, dr);

	int i = st;
	int j = mij + 1;
	int k = 0;

	while (i <= mij && j <= dr) {
		if (v[i] < v[j])
			temp[k++] = v[i++];
		else
			temp[k++] = v[j++];
	}

	while (i <= mij)
		temp[k++] = v[i++];

	while (j <= dr)
		temp[k++] = v[j++];

	for (int i = st, j = 0; i <= dr; ++i, ++j)
		v[i] = temp[j];
}

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

	int n;

	fin >> n;

	for (int i = 0; i < n; ++i)
		fin >> v[i];

	fin.close();

	sort(v, 0, n - 1);

	for (int i = 0; i < n; ++i)
		fout << v[i] << ' ';
	fout << '\n';

	fout.close();

	return 0;
}