提交记录 15585
| 提交时间 |
评测时间 |
| 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;
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 1.024 ms | 808 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #2 | 1.15 s | 762 MB + 992 KB | Wrong Answer | Score: 0 | 显示更多 |
| Testcase #3 | 2.302 s | 1525 MB + 928 KB | Wrong Answer | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-20 14:50:20 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠