Pagini recente » Cod sursa (job #244733) | Cod sursa (job #1814170) | Cod sursa (job #1812599) | Cod sursa (job #1859150) | Cod sursa (job #240590)
Cod sursa(job #240590)
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <string>
#define N 500001
#define dim 8192
char ax[dim];
int pz;
inline void cit(int &x)
{
x=0;
while(ax[pz]<'0' || ax[pz]>'9')
if(++pz==dim)fread(ax,1,dim,stdin),pz=0;
while(ax[pz]>='0' && ax[pz]<='9')
{
x=x*10+ax[pz]-'0';
if(++pz==dim)fread(ax,1,dim,stdin),pz=0;
}
}
int a[N], b[N];
inline void rad(int n, int byte, int a[], int b[])
{
int cnt[256], ind[256],i;
memset(cnt, 0, sizeof(cnt));
for(i=1; i <= n; ++i) ++cnt[(a[i]>>byte)&255];
ind[0]=1;
for(i=1; i < 256; ++i) ind[i]=ind[i-1]+cnt[i-1];
for(i=1; i <= n; ++i) b[ind[(a[i]>>byte)&255]++]=a[i];
}
inline void radix(int a[], int n)
{
rad(n, 0, a, b);
rad(n, 8, b, a);
rad(n, 16, a, b);
rad(n, 24, b, a);
}
int main()
{
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
int n,i;
cit(n);
for(i=1;i<=n;++i) cit(a[i]);
radix(a,n);
for(i=1;i<=n;++i)printf("%d ", a[i]);
return 0;
}