提交记录 18929


用户 题目 状态 得分 用时 内存 语言 代码长度
user1 1001. 测测你的排序 Accepted 100 4.073 s 390656 KB C++ 676 B
提交时间 评测时间
2023-01-25 01:16:56 2023-01-25 01:17:03
#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 #14.073 s381 MB + 512 KBAcceptedScore: 100


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