Cod sursa(job #2279125)

Utilizator flibiaVisanu Cristian flibia Data 8 noiembrie 2018 22:32:17
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <bits/stdc++.h>
#pragma GCC optimize("03")

using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int n, a[500100];

void Sort(int st, int  dr) {
	if (st >= dr)
		return;
	int len = dr - st + 1;
	int piv = a[rand() % len + st];
	int l = st, r = dr;
	while (l <= r) {
		while (a[l] < piv)
			l++;
		while (a[r] > piv)
			r--;
		if (l <= r) {
			swap(a[l], a[r]);
			l++;
			r--;
		}
	}
	Sort(st, r);
	Sort(l, dr);
}

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