提交记录 30616
| 提交时间 |
评测时间 |
| 2026-08-12 23:38:25 |
2026-08-12 23:38:33 |
#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) {
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.273 ms | 824 KB | Accepted | Score: 34 | 显示更多 |
| Testcase #2 | 1.562 s | 762 MB + 1004 KB | Accepted | Score: 33 | 显示更多 |
| Testcase #3 | 3 s | 1525 MB + 936 KB | Time Limit Exceeded | Score: 0 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-09-12 12:44:47 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠