Cod sursa(job #1759207)

Utilizator catalincraciunCraciun Catalin catalincraciun Data 18 septembrie 2016 17:26:33
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <iostream>
#include <fstream>
#include <algorithm>

#define nmax 500005

using namespace std;

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

int n;
int A[nmax];

void read() {
	f>>n;
	for (int i=1;i<=n;i++) f>>A[i];
}

void sort(int left, int right) {
	int i = left;
	int j = right;

	int pivot = left + (right-left)/2;

	while (i < right || j > left) {
		while (A[i] < pivot) i++;
		while (A[j] > pivot) j--;

		if (i < j) {
			swap(A[i], A[j]);
			i++; j--;
		} else {
			if (i < right)
				sort(i, right);
			if (j > left)
				sort(left, j);

			return;
		}
	}
}

void output() {
	for (int i=1;i<n;i++) g<<A[i]<<' ';
	g<<A[n]<<'\n';
}

int main() {

	read();
	sort(1, n);
	output();

	f.close();
	g.close();

	return 0;
}