Cod sursa(job #3221363)

Utilizator DobraVictorDobra Victor Ioan DobraVictor Data 6 aprilie 2024 20:52:15
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <stdint.h>

const int32_t MAX_N = 500000;

int32_t n;
int32_t vec[MAX_N], temp[MAX_N];

void Sort(int32_t start, int32_t end) {
	if(start == end || start == end - 1)
		return;
	
	int32_t mid = (start + end) >> 1;
	Sort(start, mid);
	Sort(mid, end);

	for(int32_t i = start; i != end; ++i)
		temp[i] = vec[i];
	
	int32_t ind1 = start, ind2 = mid, ind = start;
	while(ind1 != mid && ind2 != end) {
		if(temp[ind1] < temp[ind2]) {
			vec[ind++] = temp[ind1++];
		} else {
			vec[ind++] = temp[ind2++];
		}
	}
	while(ind1 != mid)
		vec[ind++] = temp[ind1++];
	while(ind2 != end)
		vec[ind++] = temp[ind2++];
}

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

	fin >> n;
	for(int32_t i = 0; i != n; ++i)
		fin >> vec[i];
	
	Sort(0, n);

	for(int32_t i = 0; i != n; ++i)
		fout << vec[i] << ' ';

	fin.close();
	fout.close();

	return 0;
}