CSES - Datatähti 2017 alku - Results
Submission details
Task:Kolikot
Sender:yhyy
Submission time:2016-10-03 20:44:53 +0300
Language:Assembly
Status:READY
Result:57
Feedback
groupverdictscore
#1ACCEPTED22
#2ACCEPTED35
#30
Test results
testverdicttimegroup
#1ACCEPTED0.06 s1details
#2ACCEPTED0.06 s1details
#3ACCEPTED0.05 s1details
#4ACCEPTED0.05 s1details
#5ACCEPTED0.06 s1details
#6ACCEPTED0.05 s2details
#7ACCEPTED0.05 s2details
#8ACCEPTED0.06 s2details
#9ACCEPTED0.05 s2details
#10ACCEPTED0.05 s2details
#11ACCEPTED0.06 s3details
#12ACCEPTED0.05 s3details
#13ACCEPTED0.06 s3details
#14ACCEPTED0.06 s3details
#150.16 s3details
#16ACCEPTED0.06 s3details

Code

section .bss
syote resb 3000000
t resd 101010
vasen resd 101010
oikea resd 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*4], r9d
inc edx
loop .a
dec r10
mov esi, 0
mov edi, r10d
call mergesort
mov ecx, r10d
inc ecx
mov edx, 0
mov eax, 1
.b:
cmp eax, [t+edx*4]
jl .lopeta
add eax, [t+edx*4]
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 eax, [t+r11d*4] ; t
mov [vasen+r9d*4], eax
inc r9d ;++
inc r11d ;++
loop .a
mov eax, 1000000000
mov [vasen+r9d*4], eax ; vasen: [1, 1e9]
mov ecx, edi ; loppu
sub ecx, edx ; -keski
xor r9d, r9d ; 0
mov r11d, edx ; keski
inc r11d ; ++
.b:
mov eax, [t+r11d*4] ; t
mov [oikea+r9d*4], eax
inc r9d
inc r11d
loop .b
mov eax, 1000000000
mov [oikea+r9d*4], eax ; 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 eax, [vasen+r9d*4]
cmp eax, [oikea+r11d*4]
jg .else
mov [t+r12d*4], eax
inc r12d
inc r9d
jmp .f
.else:
mov eax, [oikea+r11d*4]
mov [t+r12d*4], eax
inc r12d
inc r11d
.f loop .c
.palaa:
ret
tulosta:
mov ebx, eax
mov eax, 1
mov ecx, 0xa
.hh:
imul ecx
cmp eax, ebx
jle .hh
idiv ecx
mov r13d, eax
mov ecx, r13d
mov eax, ebx
jmp .hui
.hh2:
mov eax, ebx
mov ecx, r13d
mov edx, 0
idiv ecx
mov ebx, edx
add eax, 0x30
stosb
mov eax, r13d
mov ecx, 10
mov edx, 0
idiv ecx
mov r13d, eax
.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
(empty)

Test 16

Group: 3

Verdict: ACCEPTED

input
100000
930494676 960662779 904422858 ...

correct output
800020001

user output
800020001