提交记录 30620
| 提交时间 |
评测时间 |
| 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();
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 1.26 ms | 824 KB | Accepted | Score: 34 | 显示更多 |
| Testcase #2 | 1.563 s | 762 MB + 1004 KB | Accepted | Score: 33 | 显示更多 |
| Testcase #3 | 705.99 ms | 762 MB + 996 KB | Wrong Answer | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-09-12 12:44:25 | Loaded in 0 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠