提交记录 13823
| 提交时间 |
评测时间 |
| 2020-08-11 17:08:31 |
2020-08-11 17:08:36 |
/*
Problem: 1001.cpp
Time: 2020-08-11 16:02
Author: CraZYali
E-Mail: yms-chenziyang@outlook.com
*/
#define file(FILE_NAME) freopen(FILE_NAME".in", "r", stdin), freopen(FILE_NAME".out", "w", stdout)
#include <iostream>
#include <cstdio>
const int w = 8, B = (1 << w) - 1;
const int maxn = 100000000;
int cnt[B + 1];
unsigned *pool, *str[B + 1];
#define work()\
{\
for (int i = 0; i < n; i++) cnt[a[i] >> w & B]++;\
str[0] = pool;\
for (int i = 0; i < B; i++) str[i + 1] = str[i] + cnt[i], cnt[i] = 0;\
for (int i = 0; i < n; i++) *(str[a[i] >> w & B]++) = a[i];\
}
void sort(unsigned *a, int n)
{
pool = new unsigned[n];
int w = 0;
{
for (int i = 0; i < n; i++) cnt[a[i] & B]++;
str[0] = pool;
for (int i = 0; i < B; i++) str[i + 1] = str[i] + cnt[i], cnt[i] = 0;
for (int i = 0; i < n; i++) *(str[a[i] & B]++) = a[i];
std :: swap(a, pool);
}
w += ::w;
work();
std :: swap(a, pool);
w += ::w;
work();
std :: swap(a, pool);
w += ::w;
work();
a = pool;
}
#ifdef CraZYali
unsigned a[maxn];
int main()
{
file("1001");
int n;scanf("%d", &n);
for (int i = 0; i < n; i++) scanf("%u", a + i);
sort(a, n);
for (int i = 0; i < n; i++) printf("%u%c", a[i], i == n - 1 ? '\n' : ' ');
return 0;
}
#endif
| Compilation | N/A | N/A | Compile OK | Score: N/A | 显示更多 |
| Testcase #1 | 853.258 ms | 762 MB + 1004 KB | Accepted | Score: 100 | 显示更多 |
Judge Duck Online | 评测鸭在线
Server Time: 2026-03-23 16:31:14 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠