Pagini recente » Cod sursa (job #2138661) | Cod sursa (job #1322191) | Cod sursa (job #711665) | Cod sursa (job #688800) | Cod sursa (job #1255060)
// 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;
}