typedef unsigned int u32;
typedef unsigned short u16;
#define N 10000
void sort(u32 *__restrict__ a, int n) {
(void)n;
static u32 tmp[N];
u16 c1[256], c2[256], c3[256], c4[256];
for (int i=0;i<256;i++){c1[i]=c2[i]=c3[i]=c4[i]=0;}
for (int i=0; i<N; i+=4) {
u32 x0=a[i], x1=a[i+1], x2=a[i+2], x3=a[i+3];
c1[x0&255]++; c2[(x0>>8)&255]++; c3[(x0>>16)&255]++; c4[x0>>24]++;
c1[x1&255]++; c2[(x1>>8)&255]++; c3[(x1>>16)&255]++; c4[x1>>24]++;
c1[x2&255]++; c2[(x2>>8)&255]++; c3[(x2>>16)&255]++; c4[x2>>24]++;
c1[x3&255]++; c2[(x3>>8)&255]++; c3[(x3>>16)&255]++; c4[x3>>24]++;
}
for (int i=1;i<256;i++){c1[i]+=c1[i-1];c2[i]+=c2[i-1];c3[i]+=c3[i-1];c4[i]+=c4[i-1];}
for (int i=N-1; i>=0; i-=4) {
u32 x0=a[i],x1=a[i-1],x2=a[i-2],x3=a[i-3];
tmp[--c1[x0&255]]=x0; tmp[--c1[x1&255]]=x1; tmp[--c1[x2&255]]=x2; tmp[--c1[x3&255]]=x3;
}
for (int i=N-1; i>=0; i-=4) {
u32 x0=tmp[i],x1=tmp[i-1],x2=tmp[i-2],x3=tmp[i-3];
a[--c2[(x0>>8)&255]]=x0; a[--c2[(x1>>8)&255]]=x1; a[--c2[(x2>>8)&255]]=x2; a[--c2[(x3>>8)&255]]=x3;
}
for (int i=N-1; i>=0; i-=4) {
u32 x0=a[i],x1=a[i-1],x2=a[i-2],x3=a[i-3];
tmp[--c3[(x0>>16)&255]]=x0; tmp[--c3[(x1>>16)&255]]=x1; tmp[--c3[(x2>>16)&255]]=x2; tmp[--c3[(x3>>16)&255]]=x3;
}
for (int i=N-1; i>=0; i-=4) {
u32 x0=tmp[i],x1=tmp[i-1],x2=tmp[i-2],x3=tmp[i-3];
a[--c4[x0>>24]]=x0; a[--c4[x1>>24]]=x1; a[--c4[x2>>24]]=x2; a[--c4[x3>>24]]=x3;
}
}
extern "C" void __init_libc(char **envp, char *pn);
extern "C" void __libc_start_main(int (*mf)(int, char**, char**), int ac, char** av) {
char **envp = av + ac + 1;
__init_libc(envp, av[0]);
int r = mf(ac, av, envp);
__asm__ volatile("mov $60,%eax; syscall" : : "D"((long)r) : "rdi","rax");
__builtin_unreachable();
}
| Compilation | N/A | N/A | Compile Error | Score: N/A | 显示更多 |