Cod sursa(job #2618631)

Utilizator radustn92Radu Stancu radustn92 Data 25 mai 2020 17:09:54
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.93 kb
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <queue>
#include <cstdlib>
#include <ctime>
using namespace std;

const int NMAX = 500505;
int N, A[NMAX];

void sortArray(int A[], int from, int to) {
	if (to - from <= 0) {
		return;
	}
	int pivot = A[from + rand() % (to - from + 1)];

	// no constant space
	int i = from, j = to;
	while (true) {
		while (i < j && A[i] < pivot) {
			i++;
		}
		while (j > i && A[j] > pivot) {
			j--;
		}
		if (i >= j) {
			break;
		}
		swap(A[i], A[j]);
		i++; j--;
	}
	
	sortArray(A, from, j);
	sortArray(A, j + 1, to);
}

int main() {
	freopen("algsort.in", "r", stdin);
	freopen("algsort.out", "w", stdout);

	srand(time(0));

	ios_base::sync_with_stdio(false);
	cin.tie(NULL);

	cin >> N;
	for (int idx = 1; idx <= N; idx++) {
		cin >> A[idx];
	}

	sortArray(A, 1, N);
	for (int idx = 1; idx <= N; idx++) {
		if (idx > 1) {
			cout << " ";
		}
		cout << A[idx];
	}
	cout << "\n";
	return 0;
}