Pagini recente » Cod sursa (job #2863543) | Cod sursa (job #1284639) | Cod sursa (job #2955259) | Cod sursa (job #1057435) | Cod sursa (job #1033861)
#include<iostream>
#include<fstream>
#include<cmath>
#define MAXIM 2147483647;
using namespace std;
int v[500000], m[500000], nn[500000];
int main()
{
int i, n, l, k, j, min, imin, t, p;
ifstream f("algsort.in");
ofstream g("algsort.out");
f >> n;
k = sqrt( n);
l = n / k;
for(i = 0; i < n ; i ++)
f >> v[i];
for(i=0; i<k; i++)
m[i]=MAXIM;
for(i=0;i<n;i++)
if(v[i]<m[i/l])
{m[i/l] = v[i];
nn[i/l] = i;
}
for(j = 0; j < n; j ++)
{
min = MAXIM;
for(i = 0; i < k; i ++)
if(m[i] < min)
{
min = m[i];
imin = nn[i];
}
g<<min<<" ";
v[imin] = MAXIM;
t = imin / l;
m[t]=MAXIM-1;
for(p = t * l; p < ( t + 1) * l; p ++)
if(v[p] < m[t])
{m[t] = v[p]; nn[t]=p;}
}
}