提交记录 12333


用户 题目 状态 得分 用时 内存 语言 代码长度
Eqvpkbz 1001. 测测你的排序 Accepted 100 793.333 ms 781264 KB C++ 1.56 KB
提交时间 评测时间
2020-03-22 16:27:43 2020-08-01 02:54:05
#define Inc(i, a, b) for(register int (i) = (a); (i) < (b); ++ (i))
#define Dec(i, a, b) for(register int (i) = (a) - 1; (i) >= (b); -- (i))
/*
void sort(unsigned *a, int n) {
    int c[4][0x100], b[100000000];
    Inc(i, 0, n)
        ++ c[0][(a[i]      ) & 0xff],
        ++ c[1][(a[i] >>  8) & 0xff],
        ++ c[2][(a[i] >> 16) & 0xff],
        ++ c[3][(a[i] >> 24) & 0xff];

    Inc(i, 1, 0x100)
        c[0][i] += c[0][i - 1],
        c[1][i] += c[1][i - 1],
        c[2][i] += c[2][i - 1],
        c[3][i] += c[3][i - 1];

    Dec(i, n, 0)
        b[-- c[0][(a[i]      ) & 0xff]] = a[i];
    Dec(i, n, 0)
        a[-- c[1][(b[i] >>  8) & 0xff]] = b[i];
    Dec(i, n, 0)
        b[-- c[2][(a[i] >> 16) & 0xff]] = a[i];
    Dec(i, n, 0)
        a[-- c[3][(b[i] >> 24) & 0xff]] = b[i];
}
*/
void sort(unsigned *a, int n){
    #define cal(w,w2,tw,op)\
    p=w2-1;\
    for(i=0;i<0x100;++i)rs[i]=p,p+=tw[i];\
    for(i=0;i<100000000;i+=8){\
    	p=w+i;\
    	*++rs[p[0]op]=p[0];\
    	*++rs[p[1]op]=p[1];\
    	*++rs[p[2]op]=p[2];\
    	*++rs[p[3]op]=p[3];\
    	*++rs[p[4]op]=p[4];\
    	*++rs[p[5]op]=p[5];\
    	*++rs[p[6]op]=p[6];\
    	*++rs[p[7]op]=p[7];\
    }
    unsigned b[100000000],*rs[0x100],t0[0x100],t1[0x100],t2[0x100],t3[0x100];
    register unsigned*p,i,x;
    for(i=0;i<0x100;++i){
    	t0[i]=0,
    	t1[i]=0,
    	t2[i]=0,
    	t3[i]=0;
    }
    for(i=0;i<100000000;){
    #define A x=a[i];++t0[x&0xFF];++t1[x>>8&0xFF];++t2[x>>16&0xFF];++t3[x>>24];++i;
    A A A A
    }
    cal(a,b,t0,&0xFF);
    cal(b,a,t1,>>8&0xFF);
    cal(a,b,t2,>>16&0xFF);
    cal(b,a,t3,>>24);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1793.333 ms762 MB + 976 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2026-03-26 06:27:10 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠