提交记录 5591
| 提交时间 |
评测时间 |
| 2018-08-30 15:24:31 |
2020-08-01 00:19:55 |
#if defined(__GNUC__) && !defined(__clang__)
#define O2 __attribute__((optimize("-O2")))
#else
#define O2
#endif
#include <stdio.h>
#include <stdlib.h>
#define BUCKET_MOD (0xFFFFU)
#define BUCKET_SIZE (BUCKET_MOD + 1U)
#define MAX_SIZE (10000000U)
typedef unsigned sort_t;
sort_t arr[MAX_SIZE];
O2 void sort(sort_t *data, int n) {
unsigned int k1[BUCKET_SIZE] = {0}, k2[BUCKET_SIZE] = {0};
unsigned int i;
// sort_t *arr = (sort_t*)malloc(sizeof(data[0]) * n);
sort_t *p;
for (p = data + n; p > data; ) {
register sort_t tmp = *(--p);
if ((tmp >> 16) > BUCKET_MOD) {
printf("k1++:%u\n", tmp >> 16);
}
++k2[tmp & BUCKET_MOD];
++k1[tmp >> 16];
}
for (i = 1; i < BUCKET_SIZE; ++i) {
k2[i] += k2[i - 1];
k1[i] += k1[i - 1];
}
for (p = data + n; p > data; ) {
register sort_t tmp = *(--p);
if (k2[tmp & BUCKET_MOD] == 0) {
printf("k2:%u\n", tmp & BUCKET_MOD);
}
arr[--k2[tmp & BUCKET_MOD]] = tmp;
}
for (p = arr + n; p > arr; ) {
register sort_t tmp = *(--p);
if (k1[tmp >> 16] == 0) {
printf("k1:%u\n", tmp >> 16);
}
data[--k1[tmp >> 16]] = tmp;
}
// free(arr);
}
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 2.584 s | 763 MB + 460 KB | Accepted | Score: 100 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-04-11 15:23:46 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠