提交记录 15585


用户 题目 状态 得分 用时 内存 语言 代码长度
wawcac wc2017b1. 【WC2017】挑战-任务1 Wrong Answer 0 2.302 s 1562528 KB C++ 1.32 KB
提交时间 评测时间
2021-01-02 02:05:37 2021-01-02 02:05:41
void sort(unsigned *a,int n)
{
	unsigned *b=new unsigned[n];
	unsigned cnt0[256],cnt8[256],cnt16[256],cnt24[256];
    unsigned *ptr0[256], *ptr8[256], *ptr16[256], *ptr24[256];

    for(int i=0;i<256;i++){
		cnt0[i]=0;
		cnt8[i]=0;
		cnt16[i]=0;
		cnt24[i]=0;
	}

#define calcCnt(k) \
for(unsigned *now=a+n;now>=a+4;now-=4){\
    ++cnt##k[now[-1]>>k&255];\
    ++cnt##k[now[-2]>>k&255];\
    ++cnt##k[now[-3]>>k&255];\
    ++cnt##k[now[-4]>>k&255];\
}\
switch(n&3){\
    case 3:++cnt##k[a[2]>>k&255];\
    case 2:++cnt##k[a[1]>>k&255];\
    case 1:++cnt##k[a[0]>>k&255];\
}
    calcCnt(0);
    calcCnt(8);
    calcCnt(16);
    calcCnt(24);


    ptr0[0]=b-1;
	ptr8[0]=a-1;
	ptr16[0]=b-1;
	ptr24[0]=a-1;
	for(int i=1;i<256;++i){
        ptr0[i]=cnt0[i-1]+ptr0[i-1];
		ptr8[i]=cnt8[i-1]+ptr8[i-1];
		ptr16[i]=cnt16[i-1]+ptr16[i-1];
		ptr24[i]=cnt24[i-1]+ptr24[i-1];
	}


#define countingSort(a,b,k) \
for(unsigned *now=a+n;now>=a+4;now-=4){\
    *++ptr##k[now[-1]>>k&255]=now[-1];\
    *++ptr##k[now[-2]>>k&255]=now[-2];\
    *++ptr##k[now[-3]>>k&255]=now[-3];\
    *++ptr##k[now[-4]>>k&255]=now[-4];\
}\
switch(n&3){\
    case 3:*++ptr##k[a[2]>>k&255]=a[2];\
    case 2:*++ptr##k[a[1]>>k&255]=a[1];\
    case 1:*++ptr##k[a[0]>>k&255]=a[0];\
}

	countingSort(a,b,0);
	countingSort(b,a,8);
	countingSort(a,b,16);
	countingSort(b,a,24);
    delete[] b;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #11.024 ms808 KBWrong AnswerScore: 0

Testcase #21.15 s762 MB + 992 KBWrong AnswerScore: 0

Testcase #32.302 s1525 MB + 928 KBWrong AnswerScore: 0


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