#include<bits/stdc++.h>
void sort(int n,unsigned *a,unsigned *b,int len)
{
int cnt[256];
memset(cnt,0,1024);
register int i;
for(i=0; i<=n-8; i+=8)
{
++cnt[a[i]>>len&255],
++cnt[a[i+1]>>len&255],
++cnt[a[i+2]>>len&255],
++cnt[a[i+3]>>len&255],
++cnt[a[i+4]>>len&255],
++cnt[a[i+5]>>len&255],
++cnt[a[i+6]>>len&255],
++cnt[a[i+7]>>len&255];
}
for(i=1; i<256; ++i) cnt[i]+=cnt[i-1];
for(i=n-1; i>=7; i-=8)
{
b[--cnt[a[i]>>len&255]]=a[i],
b[--cnt[a[i-1]>>len&255]]=a[i-1],
b[--cnt[a[i-2]>>len&255]]=a[i-2],
b[--cnt[a[i-3]>>len&255]]=a[i-3],
b[--cnt[a[i-4]>>len&255]]=a[i-4],
b[--cnt[a[i-5]>>len&255]]=a[i-5],
b[--cnt[a[i-6]>>len&255]]=a[i-6],
b[--cnt[a[i-7]>>len&255]]=a[i-7];
}
}
void sort(unsigned *a,int n)
{
unsigned *b=new unsigned[n];
sort(n,a,b,0),sort(n,b,a,8),sort(n,a,b,16),sort(n,b,a,24);
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Testcase #1 | 912.003 ms | 762 MB + 1000 KB | Accepted | Score: 100 | 显示更多 |