提交记录 1566


用户 题目 状态 得分 用时 内存 语言 代码长度
hqztrue 1001. 测测你的排序 Accepted 100 867.645 ms 781260 KB C 1.19 KB
提交时间 评测时间
2018-06-20 22:04:54 2020-07-31 20:52:14
#define base 255
unsigned B[100000005];
unsigned s[base+1];
void radix_sort_(unsigned *A,int l,int r){  //a[i]>=0, -O2
	A+=l-1;r-=l-1;l=1;
	unsigned *a=A,*b=B;
	{
		for (int i=0;i<=base;++i)s[i]=0;
		for (int i=1;i<=r;++i)++s[a[i]&base];
		for (int i=1;i<=base;++i)s[i]+=s[i-1];
		for (int i=0;i<=base;++i)++s[i];
		for (int i=r;i>=1;--i)b[--s[a[i]&base]]=a[i];
		unsigned *tmp=a;a=b;b=tmp;
	}
	{
		for (int i=0;i<=base;++i)s[i]=0;
		for (int i=1;i<=r;++i)++s[a[i]>>8&base];
		for (int i=1;i<=base;++i)s[i]+=s[i-1];
		for (int i=0;i<=base;++i)++s[i];
		for (int i=r;i>=1;--i)b[--s[a[i]>>8&base]]=a[i];
		unsigned *tmp=a;a=b;b=tmp;
	}
	{
		for (int i=0;i<=base;++i)s[i]=0;
		for (int i=1;i<=r;++i)++s[a[i]>>16&base];
		for (int i=1;i<=base;++i)s[i]+=s[i-1];
		for (int i=0;i<=base;++i)++s[i];
		for (int i=r;i>=1;--i)b[--s[a[i]>>16&base]]=a[i];
		unsigned *tmp=a;a=b;b=tmp;
	}
	{
		for (int i=0;i<=base;++i)s[i]=0;
		for (int i=1;i<=r;++i)++s[a[i]>>24&base];
		for (int i=1;i<=base;++i)s[i]+=s[i-1];
		for (int i=0;i<=base;++i)++s[i];
		for (int i=r;i>=1;--i)b[--s[a[i]>>24]]=a[i];
		unsigned *tmp=a;a=b;b=tmp;
	}
	if (a!=A)for (int i=1;i<=r;++i)A[i]=a[i];
}

void sort(unsigned *a, int n){
	radix_sort_(a, 0, n-1);
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #1867.645 ms762 MB + 972 KBAcceptedScore: 100


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