CSES - Datatähti 2017 alku - Results
Submission details
Task:Kolikot
Sender:yhyy
Submission time:2016-10-03 21:19:55 +0300
Language:Assembly
Status:READY
Result:57
Feedback
groupverdictscore
#1ACCEPTED22
#2ACCEPTED35
#30
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1details
#2ACCEPTED0.06 s1details
#3ACCEPTED0.07 s1details
#4ACCEPTED0.06 s1details
#5ACCEPTED0.06 s1details
#6ACCEPTED0.05 s2details
#7ACCEPTED0.06 s2details
#8ACCEPTED0.07 s2details
#9ACCEPTED0.06 s2details
#10ACCEPTED0.05 s2details
#11ACCEPTED0.06 s3details
#12ACCEPTED0.05 s3details
#13ACCEPTED0.07 s3details
#14ACCEPTED0.06 s3details
#150.07 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 ecx, r9d
mov r10d, r9d
xor edx, edx
.a:
call luku
mov [t+edx*8], r9d
inc edx
loop .a
dec r10
mov esi, 0
mov edi, r10d
call mergesort
mov ecx, r10d
inc ecx
mov edx, 0
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 edx, edi
sub edx, tuloste
mov eax, 4
mov ebx, 1
mov ecx, tuloste
int 0x80
mov eax, 1
mov ebx, 0
int 0x80
luku:
xor rax, rax
xor r9, r9
.a:
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 ; alku
mov [rbp-8], edi ; loppu
mov edx, esi
add edx, edi
sar edx, 1 ; keski
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 ; keski
sub ecx, esi ; -alku
inc ecx ; +1
xor r9d, r9d ; 0
mov r11d, esi ; alkut
.a:
mov rax, [t+r11d*8] ; t
mov [vasen+r9d*8], rax
inc r9d ;++
inc r11d ;++
loop .a
mov rax, 1000000000
mov [vasen+r9d*8], rax
mov ecx, edi
sub ecx, edx
xor r9d, r9d
mov r11d, edx
inc r11d
.b:
mov rax, [t+r11d*8] ; t
mov [oikea+r9d*8], rax
inc r9d
inc r11d
loop .b
mov rax, 1000000000
mov [oikea+r9d*8], rax ; oikea: [2, 1e9]
mov ecx, edi ; loppu
sub ecx, esi ; -alku
inc ecx ; ++
xor r9d, r9d ;0
xor r11d, r11d;0
mov r12d, esi ; alku
.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 r13d, 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:

input
100000
35894853 796619259 699878597 4...

correct output
44965249639582

user output
4

Test 16

Group: 3

Verdict: ACCEPTED

input
100000
930494676 960662779 904422858 ...

correct output
800020001

user output
800020001