Cod sursa(job #1303154)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 27 decembrie 2014 17:52:58
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
using namespace std;
int n, v[500100], increment[100], nrinc;

int main()
{
	int i, j, d, x;
	ifstream fin("algsort.in");
	fin >> n;
	for(i = 1; i <= n; ++i)
		fin >> v[i];
	fin.close();
	
	increment[++nrinc] = 1;
	while(3 * increment[nrinc] + 1 < n)
	{
		nrinc++;
		increment[nrinc] = 3 * increment[nrinc - 1] + 1;
	}
	for(j = nrinc; j > 0; --j)
	{
		d = increment[j];
		for(i = d + 1; i <= n; ++i)
		{
			x = v[i];
			while(i - d > 0 && v[i - d] > x)
			{
				v[i] = v[i - d];
				i -= d;
			}
			v[i] = x;
		}
	}
	
	ofstream fout("algsort.out");
	for(i = 1; i <= n; ++i)
		fout << v[i] << ' ';
	fout << "\n";
	fout.close();
	return 0;
}