CSES - Datatähti 2017 alku - Results
Submission details
Task:Kolikot
Sender:yhyy
Submission time:2016-10-06 18:40:26 +0300
Language:Assembly
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED22
#2ACCEPTED35
#3ACCEPTED43
Test results
testverdicttimegroup
#1ACCEPTED0.05 s1details
#2ACCEPTED0.05 s1details
#3ACCEPTED0.06 s1details
#4ACCEPTED0.05 s1details
#5ACCEPTED0.05 s1details
#6ACCEPTED0.06 s2details
#7ACCEPTED0.05 s2details
#8ACCEPTED0.05 s2details
#9ACCEPTED0.06 s2details
#10ACCEPTED0.05 s2details
#11ACCEPTED0.07 s3details
#12ACCEPTED0.06 s3details
#13ACCEPTED0.08 s3details
#14ACCEPTED0.06 s3details
#15ACCEPTED0.08 s3details
#16ACCEPTED0.06 s3details

Code

section	.bss
	syote resb 3000000
	t resq 101010
	vasen resq 101010
	oikea resq 101010
	tuloste resb 100
section	.text
	global _start

_start:
	mov	eax, 3
	mov	ebx, 0
	mov	ecx, syote
	mov	edx, 3000000
	int	0x80
	mov	rsi, syote
	call	luku
	mov	rcx, r9
	mov	r10, r9
	xor	rdx, rdx
.a:
	call	luku
	mov	[t+edx*8], r9
	inc	edx
	loop	.a

	dec	r10d
	xor	rsi, rsi
	mov	rdi, r10
	call	mergesort
	mov	rcx, r10
	inc	rcx
	xor	rdx, rdx
	mov	rax, 1
.b:
	cmp	rax, [t+edx*8]
	jl	.lopeta
	add	rax, [t+edx*8]
	inc	edx
	loop	.b	
.lopeta:
	mov	rdi, tuloste
	call	tulosta
	mov	rdx, rdi
	sub	rdx, tuloste
	mov	rax, 4
	mov	rbx, 1
	mov	rcx, tuloste
	int	0x80
	mov	rax, 1
	mov	rbx, 0
	int	0x80
luku:
	xor	r9, r9
.a:
	xor	rax, rax
	lodsb
	cmp	al, 0x30
	jl	.mm
	cmp	al, 0x39
	jg	.mm
	sub	al, 0x30
	imul	r9, 10
	add	r9, rax
	jmp	.a
.mm:
	cmp	r9, 0
	je	.a
	ret

mergesort:
	push	rbp
	mov	rbp, rsp
	sub	rsp, 12
	cmp	esi, edi
	jnl	.palaa
	mov	[rbp-4], esi  
	mov	[rbp-8], edi  
	mov	edx, esi
	add	edx, edi
	sar	edx, 1        
	mov	[rbp-12], edx
	mov	edi, edx
	call	mergesort
	mov	esi, [rbp-12]
	inc	esi
	mov	edi, [rbp-8]
	call	mergesort
	mov	esi, [rbp-4]
	mov	edi, [rbp-8]
	mov	edx, [rbp-12]
	call	merge
.palaa:
	leave
	ret

merge:
	mov	ecx, edx  
	sub	ecx, esi  
	inc	ecx       
	xor	r9, r9  
	mov	r11d, esi 
.a:
	mov	rax, [t+r11d*8]  
	mov	[vasen+r9d*8], rax 
	inc	r9d  
	inc	r11d  
	loop	.a
	
	mov	rax, 1000000001
	mov	[vasen+r9d*8], rax
	mov	ecx, edi
	sub	ecx, edx
	xor	r9, r9    
	mov	r11d, edx   
	inc	r11d    
.b:
	mov	rax, [t+r11d*8]
	mov	[oikea+r9d*8], rax
	inc	r9d
	inc	r11d
	loop	.b
	mov	rax, 1000000001
	mov	[oikea+r9d*8], rax
	mov	ecx, edi
	sub	ecx, esi
	inc	ecx     
	xor	r9, r9
	xor	r11, r11
	mov	r12d, esi
.c:
	mov	rax, [vasen+r9d*8]
	cmp	rax, [oikea+r11d*8]
	jg	.else
	mov	[t+r12d*8], rax
	inc	r12d
	inc	r9d
	jmp	.f
.else:
	mov	rax, [oikea+r11d*8]
	mov	[t+r12d*8], rax
	inc	r12d
	inc	r11d
.f	loop	.c
.palaa:
	ret

tulosta:
	mov	rbx, rax
	mov	rax, 1
	mov	rcx, 0xa
.hh:
	cqo
	imul	rcx
	cmp	rax, rbx
	jle	.hh
	xor	rdx, rdx
	cqo
	idiv	rcx
	mov	r13, rax
	mov	rcx, r13
	mov	rax, rbx
	jmp	.hui
.hh2:
	mov	rax, rbx
	mov	rcx, r13
	xor	rdx, rdx
	cqo
	idiv	rcx
	mov	rbx, rdx
	add	rax, 0x30
	stosb
	mov	rax, r13
	mov	rcx, 10
	xor	rdx, rdx
	cqo
	idiv	rcx
	mov	r13, rax
.hui:
	cmp	r13, 0
	jg	.hh2
	mov	eax, 0xA
	stosb
	ret

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
10
5 3 1 4 5 1 3 2 2 3

correct output
30

user output
30

Test 2

Group: 1

Verdict: ACCEPTED

input
10
3 5 5 4 5 4 5 5 5 3

correct output
1

user output
1

Test 3

Group: 1

Verdict: ACCEPTED

input
10
10 9 2 8 7 10 7 1 5 2

correct output
62

user output
62

Test 4

Group: 1

Verdict: ACCEPTED

input
10
7 4 6 3 9 7 4 4 7 7

correct output
1

user output
1

Test 5

Group: 1

Verdict: ACCEPTED

input
10
8 2 1 7 9 7 5 2 4 5

correct output
51

user output
51

Test 6

Group: 2

Verdict: ACCEPTED

input
100
3 3 1 4 2 1 2 1 3 1 2 5 1 5 1 ...

correct output
269

user output
269

Test 7

Group: 2

Verdict: ACCEPTED

input
100
3 3 2 3 4 5 4 4 4 4 2 2 4 4 4 ...

correct output
1

user output
1

Test 8

Group: 2

Verdict: ACCEPTED

input
100
678 999 374 759 437 390 832 54...

correct output
1

user output
1

Test 9

Group: 2

Verdict: ACCEPTED

input
100
862 537 633 807 666 248 237 5 ...

correct output
30

user output
30

Test 10

Group: 2

Verdict: ACCEPTED

input
100
874 302 384 920 76 28 762 163 ...

correct output
41765

user output
41765

Test 11

Group: 3

Verdict: ACCEPTED

input
100000
4 2 5 3 2 3 5 2 2 2 3 4 3 3 2 ...

correct output
299640

user output
299640

Test 12

Group: 3

Verdict: ACCEPTED

input
100000
2 5 5 5 5 2 4 4 3 2 3 2 5 5 3 ...

correct output
1

user output
1

Test 13

Group: 3

Verdict: ACCEPTED

input
100000
98146842 766872135 84108268 28...

correct output
1

user output
1

Test 14

Group: 3

Verdict: ACCEPTED

input
100000
932032495 1 849176169 78948957...

correct output
29970

user output
29970

Test 15

Group: 3

Verdict: ACCEPTED

input
100000
35894853 796619259 699878597 4...

correct output
44965249639582

user output
44965249639582

Test 16

Group: 3

Verdict: ACCEPTED

input
100000
930494676 960662779 904422858 ...

correct output
800020001

user output
800020001