提交记录 4004


用户 题目 状态 得分 用时 内存 语言 代码长度
Alen 1001. 测测你的排序 Compile Error 0 0 ns 0 KB C++ 2.56 KB
提交时间 评测时间
2018-07-18 20:26:54 2020-07-31 22:14:02
#define N 100000000
#define D 256
#define D1 255
unsigned *rs[D],t0[D],t1[D],t2[D],t3[D];
void count_t(unsigned*a){
	asm volatile(R"(
		movl $12500000,%%ecx
		movl %[a],%%esi
		0:
			movl (%%esi),%%eax
			movl 4(%%esi),%%ebx
			
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t0](,%%edx,4)
			incl %[t0](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t1](,%%edx,4)
			incl %[t1](,%%edi,4)
			shrl $16,%%eax
			shrl $16,%%ebx
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t2](,%%edx,4)
			incl %[t2](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t3](,%%edx,4)
			incl %[t3](,%%edi,4)
						
			movl 8(%%esi),%%eax
			movl 12(%%esi),%%ebx
			
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t0](,%%edx,4)
			incl %[t0](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t1](,%%edx,4)
			incl %[t1](,%%edi,4)
			shrl $16,%%eax
			shrl $16,%%ebx
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t2](,%%edx,4)
			incl %[t2](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t3](,%%edx,4)
			incl %[t3](,%%edi,4)
			
			movl 16(%%esi),%%eax
			movl 20(%%esi),%%ebx
			
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t0](,%%edx,4)
			incl %[t0](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t1](,%%edx,4)
			incl %[t1](,%%edi,4)
			shrl $16,%%eax
			shrl $16,%%ebx
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t2](,%%edx,4)
			incl %[t2](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t3](,%%edx,4)
			incl %[t3](,%%edi,4)
						
			movl 24(%%esi),%%eax
			movl 28(%%esi),%%ebx
			
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t0](,%%edx,4)
			incl %[t0](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t1](,%%edx,4)
			incl %[t1](,%%edi,4)
			shrl $16,%%eax
			shrl $16,%%ebx
			movzbl %%al,%%edx
			movzbl %%bl,%%edi
			incl %[t2](,%%edx,4)
			incl %[t2](,%%edi,4)
			movzbl %%ah,%%edx
			movzbl %%bh,%%edi
			incl %[t3](,%%edx,4)
			incl %[t3](,%%edi,4)
			
			addl $32,%%esi
			dec %%ecx
			test %%ecx,%%ecx
			jnz 0b
	)"
	:
	:[a]"m"(a),[t0]"m"(t0),[t1]"m"(t1),[t2]"m"(t2),[t3]"m"(t3)
	:"memory","eax","ebx","ecx","edx","esi","edi"
	);
}
__attribute((opitmize("-o3")))
void sort(unsigned*a,int n){
#define cal(w,w2,tw,op) \
p=w2-1;\
for(i=0;i<D;++i)rs[i]=p,p+=tw[i];\
for(i=0;i<N;i+=8){\
	p=w+i;\
	*++rs[p[0]op]=p[0],\
	*++rs[p[1]op]=p[1],\
	*++rs[p[2]op]=p[2],\
	*++rs[p[3]op]=p[3],\
	*++rs[p[4]op]=p[4],\
	*++rs[p[5]op]=p[5],\
	*++rs[p[6]op]=p[6],\
	*++rs[p[7]op]=p[7];\
}
unsigned b[N],*p,i,x;
count_t(a);
cal(a,b,t0,&D1);
cal(b,a,t1,>>8&D1);
cal(a,b,t2,>>16&D1);
cal(b,a,t3,>>24);
}

CompilationN/AN/ACompile ErrorScore: N/A


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