Cod sursa(job #1473706)

Utilizator tamionvTamio Vesa Nakajima tamionv Data 20 august 2015 00:13:14
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <utility>
#include <array>
#include <queue>
#include <functional>
using namespace std;
using namespace std::placeholders;

template <typename T>
const T& median_3(const T& a, const T& b, const T& c){
	return (a <= b && b <= c) || (c <= b && b <= a) ? b : median_3(b, c, a); }

template <typename It>
void my_sort(const It s, const It d){
	if(distance(s, d) > 1){
		const auto pivot_val = median_3(*s, *d, *(s + distance(s, d)/2));
		const auto pivot = partition(s, d, bind(less<int>(), _1, pivot_val));
		my_sort(s, pivot);
		if(pivot != d){
			my_sort(pivot+1, d); } } }

int main(){
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	int n;
	f >> n;
	vector<int> v(n);
	copy_n(istream_iterator<int>(f), n, begin(v));
	my_sort(begin(v), end(v));
	copy(begin(v), end(v), ostream_iterator<int>(g, " "));
	return 0; }