提交记录 18950


用户 题目 状态 得分 用时 内存 语言 代码长度
user1 1001c. 测测你的排序4 Accepted 100 13.14 s 522268 KB C++ 676 B
提交时间 评测时间
2023-02-01 01:44:28 2023-02-01 01:44:46
#include <algorithm>
#define bitwd 8
template<int N>
void sortB(unsigned *a, int n) {
	if (n<512) {
		std::sort (a, a+n);
		return;
	}
	int cnt[(1<<bitwd)] = {};
	for (int i=0; i<n; ++i) cnt[(a[i]>>bitwd*N)&(1<<bitwd)-1]++;
	unsigned *begin[(1<<bitwd)], *end[(1<<bitwd)];
	for (int i=0; i<(1<<bitwd); ++i) {
		begin[i] = a;
		end[i] = a+=cnt[i];
	}
	for (int i=0; i<(1<<bitwd)-1; ++i) {
		while (begin[i] != end[i]) {
			std::swap(*begin[i], *--end[(*begin[i]>>bitwd*N)&(1<<bitwd)-1]);
		}
	}
	for (int i=0; i<(1<<bitwd); ++i) {
		sortB<N-1> (begin[i], cnt[i]);
	}
}
template<>
void sortB<-1>(unsigned *a, int n) {}

void sort(unsigned *a, int n) {
	sortB<(31/bitwd)>(a, n);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #113.14 s510 MB + 28 KBAcceptedScore: 100


Judge Duck Online | 评测鸭在线
Server Time: 2025-09-16 10:34:16 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠