Pagini recente » Cod sursa (job #730229) | Cod sursa (job #135558) | Cod sursa (job #776536) | Cod sursa (job #3125888) | Cod sursa (job #1193455)
#include <cstdio>
#include <cstring>
using namespace std;
#define mainMask 8
#define NMAX 500001
int N,A,C,i;
int HA[1<<mainMask];
int H[NMAX],V[NMAX];
void Solve(int P)
{
memset(HA,0,sizeof(HA));
memset(H,0,sizeof(H));
int mask=(1<<mainMask)-1;
int i;
for (i=1;i<=N;++i)
++HA[ ( V[i] & ( mask<<P ) ) >>P ];
for (i=1;i<=mask;++i)
HA[i]+=HA[i-1];
for (i=mask;i>=1;--i)
HA[i]=HA[i-1];
for (i=1 , HA[0]=0;i<=N;++i)
H[ ++HA [ ( V[i] & ( mask<<P ) ) >>P ] ] =V[i];
for (i=1;i<=N;++i)
V[i]=H[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+=mainMask)
Solve(i);
for (i=1;i<=N;++i) printf("%d ",V[i]);
printf("\n");
return 0;
}