提交记录 13428
提交时间 |
评测时间 |
2020-08-03 11:10:05 |
2020-08-03 11:10:07 |
#include <cstring>
typedef unsigned int u32;
u32 oc[256];
u32 tmp[10004];
__attribute__((optimize("O4"),target("avx2")))
void sort(u32 *inp, int n) {
#define half(a,b,k) { \
memset(oc, 0, sizeof oc); int i; \
for(i=n; i; i-=8) { \
oc[a[i-1]k]++;oc[a[i-2]k]++; \
oc[a[i-3]k]++;oc[a[i-4]k]++; \
oc[a[i-5]k]++;oc[a[i-6]k]++; \
oc[a[i-7]k]++;oc[a[i-8]k]++; \
} for(; i; i--) oc[a[i-1]k]++; \
for(i=1; i<256; i++) oc[i] += oc[i-1]; \
for(i=n; i; i-=8) { \
b[--oc[a[i-1]k]]=a[i-1];b[--oc[a[i-2]k]]=a[i-2];\
b[--oc[a[i-3]k]]=a[i-3];b[--oc[a[i-4]k]]=a[i-4];\
b[--oc[a[i-5]k]]=a[i-5];b[--oc[a[i-6]k]]=a[i-6];\
b[--oc[a[i-7]k]]=a[i-7];b[--oc[a[i-8]k]]=a[i-8];\
} for(; i; i--) b[--oc[a[i-1]k]] = a[i-1]; }
half(inp, tmp, &255);
half(tmp, inp, >>8&255);
half(inp, tmp, >>16&255);
half(tmp, inp, >>24);
#undef half
}
Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
Testcase #1 | 69.25 us | 88 KB | Accepted | Score: 100 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2024-12-05 10:26:33 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠