提交记录 13428


用户 题目 状态 得分 用时 内存 语言 代码长度
w33z8kqrqk8zzzx33 1001a. 测测你的排序2 Accepted 100 69.25 us 88 KB C++ 842 B
提交时间 评测时间
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
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #169.25 us88 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2024-12-05 10:26:33 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠