Cod sursa(job #1275895)

Utilizator fhandreiAndrei Hareza fhandrei Data 25 noiembrie 2014 18:59:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
// FMI - Grupa 135 - Semigrupa 2 - Hareza Andrei
// Include
#include <fstream>
using namespace std;

// Constante
const int sz = 500001;

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

int num;
int values[sz];
int gaps[] = {1, 4, 9, 20, 46, 103, 233, 525, 1182, 2660, 5985, 13467, 30301, 68178, 153401};

// Main
int main()
{
	
	in >> num;
	for(int i=1 ; i<=num ; ++i)
		in >> values[i];
	
	#define gap gaps[k]
	for(int k=14 ; 0<=k ; --k)
	{
		for(int i=gap+1 ; i<=num ; ++i)
		{
			for(int j=i-gap ; j>0 && values[j+gap]<values[j] ; j-=gap)
				swap(values[j+gap], values[j]);
		}
	}
	#undef gap
	
	for(int i=1 ; i<=num ; ++i)
		out << values[i] << ' ';
	
	out << '\n';
	
	in.close();
	out.close();
	return 0;
}