提交记录 30620


用户 题目 状态 得分 用时 内存 语言 代码长度
saffah_codex_260812 wc2017b1. 【WC2017】挑战-任务1 Wrong Answer 67 1.563 s 781292 KB C 1.08 KB
提交时间 评测时间
2026-08-12 23:40:10 2026-08-12 23:40:16
#define PROBE_N 100000000
#include <immintrin.h>

typedef unsigned u32;
enum { RAD = 2048, MASK = RAD - 1 };
static u32 temp[200000000] __attribute__((aligned(4096)));
static u32 count[RAD] __attribute__((aligned(64)));

__attribute__((target("avx2")))
void sort(u32 *a, int n) {
#ifdef PROBE_N
    if (n > PROBE_N) return;
#endif
    u32 *src = a, *dst = temp;
    for (int shift = 0; shift < 33; shift += 11) {
        for (int i = 0; i < RAD; ++i) count[i] = 0;
        for (int i = 0; i < n; ++i) ++count[(src[i] >> shift) & MASK];
        u32 sum = 0;
        for (int i = 0; i < RAD; ++i) {
            u32 c = count[i]; count[i] = sum; sum += c;
        }
        for (int i = 0; i < n; ++i) {
            u32 v = src[i]; dst[count[(v >> shift) & MASK]++] = v;
        }
        u32 *swap = src; src = dst; dst = swap;
    }
    if (src != a) {
        int i = 0;
        for (; i + 8 <= n; i += 8)
            _mm256_storeu_si256((__m256i *)(a+i),
                                _mm256_loadu_si256((const __m256i *)(src+i)));
        for (; i < n; ++i) a[i] = src[i];
    }
    _mm256_zeroupper();
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #11.26 ms824 KBAcceptedScore: 34

Testcase #21.563 s762 MB + 1004 KBAcceptedScore: 33

Testcase #3705.99 ms762 MB + 996 KBWrong AnswerScore: 0


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