Pagini recente » Istoria paginii runda/info_bv_11-12_1/clasament | Cod sursa (job #232432) | 3_iulie | Cod sursa (job #1702845) | Cod sursa (job #1695806)
#include <bits/stdc++.h>
using namespace std;
const int nmax = 1<<19;
const int dim = 8;
int n,i;
int v[nmax] , aux[nmax];
int ap[1<<dim];
void bagaradix(int p)
{
memset(ap , 0 , sizeof(ap));
int i;
int mask = (1 << dim) - 1;
for (i = 1; i <= n; ++i)
ap[(v[i] >> p) & mask]++;
for (i = 1; i <= mask; ++i)
ap[i] += ap[i-1];
for (i = mask; i ; --i) ap[i] = ap[i-1];
ap[0] = 0;
for (i = 1; i <= n; ++i)
aux[++ap[(v[i] >> p) & mask]] = v[i];
for (i = 1; i <= n; ++i)
v[i] = aux[i];
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d", &n);
for (i = 1; i <= n; ++i) scanf("%d",&v[i]);
for (i = 0; i < 32; i += dim)
bagaradix(i);
for (i = 1; i <= n; i ++)
printf("%d ", v[i]);
return 0;
}