CSES - Datatähti 2018 alku - Results
Submission details
Task:Kyselyt
Sender:yhyy
Submission time:2017-10-06 21:36:15 +0300
Language:Assembly
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED25
#3ACCEPTED63
Test results
testverdicttimegroup
#1ACCEPTED0.04 s1details
#2ACCEPTED0.05 s2details
#3ACCEPTED0.05 s3details

Code

section .data
section .bss
syote resb 30000000 ; syöte
buf resb 90090000 ; tuloste
asd resb 1
section .text
global _start
_start:
mov eax, 3
mov ebx, 0
mov ecx, syote
mov edx, 30000000
int 0x80 ; lue syöte
mov rsi, syote
mov rdi, buf
call read
mov r15, rax ; n
xor r14, r14
mov r13, buf
._00:
call read
mov r8, 1
mov r9, 9
mov r10, 1
._0: mov rdx, r9
imul rdx, r8
cmp rax, rdx
jle ._1
sub rax, rdx
imul r9, 10
inc r8
imul r10, 10
jmp ._0
._1:
dec rax
xor rdx, rdx
cqo
div r8
add rax, r10
mov r12, rsi
mov rsi, rdi
add rsi, rdx
call print
xchg rdi, r13
lodsb
stosb
mov al, ' '
stosb
xchg rdi, r13
mov rsi, r12
inc r14
cmp r14, r15
jl ._00
xchg rdi, r13
.lopeta:
call flush
mov rax, 1
mov rbx, 0
int 0x80
;) ****************** flush ********************* (;
; suoritetaan lopussa niin buf tulostuu
flush: ;! huom sotkee lähes KAIKEN
mov rdx, rdi
sub rdx, buf
mov rax, 4
mov rbx, 1
mov rcx, buf
int 0x80
ret
;) ****************** read ********************* (;
;! rsi nykyinen kohta syötteessä
;) laittaa syötteestä yhden luvun rax <- x, rdx <- |x|, rbx <- sign(x)
;! 64-bit
;( sotkee rbx, rdx ja rax)
read:
mov rbx, 1
xor rdx, rdx
xor rax, rax
._: lodsb
cmp al, 0x2d
je ._1
cmp al, 0x30
jl ._2
cmp al, 0x39
jg ._2
sub al, 0x30
imul rdx, 10
add rdx, rax
cmp rdx, 0
jne ._
jmp ._3
._1: mov rbx, -1
._2: cmp rdx, 0
je ._
._3: mov rax, rdx
imul rax, rbx
ret
;) ***************** debug_print ******************** (;
;) säilyttää rekisterit
;( aika häviö että 0x80 nollaa r8-r11 =/ )
debug_print:
push r8
push r9
push r10
push r11
push rdi
push rdx
push rbx
push rax
push rcx
call print
call flush
pop rcx
pop rax
pop rbx
pop rdx
pop rdi
pop r11
pop r10
pop r9
pop r8
ret
;) ****************** print ********************* (;
;! rdi tärkeä
;( sotkee rax, rdx, rbx)
print:
cmp rax, 0
jnl ._
mov rdx, rax
mov al, 0x2d ;-
stosb
mov rax, rdx
imul rax, -1
._: mov rbx, 0xa
push rdi
mov rdi, asd
std
._1: xor rdx, rdx
div rbx
xchg rax, rdx
add al, 0x30
stosb
xchg rax, rdx
cmp rax, 0
jne ._1
cld
mov rdx, rsi
mov rsi, rdi
inc rsi
pop rdi
._2: lodsb
stosb
cmp rsi, asd
jng ._2
mov al, 0x20
stosb
mov rsi, rdx
ret

Test details

Test 1

Group: 1

Verdict: ACCEPTED

input
1000
582
214
723
273
...

correct output
0
1
7
7
6
...

user output
0 1 7 7 6 1 5 4 7 6 2 2 2 2 8 ...
Truncated

Test 2

Group: 2

Verdict: ACCEPTED

input
1000
615664
916441
627600
279508
...

correct output
1
2
3
2
2
...

user output
1 2 3 2 2 8 7 9 8 3 7 1 9 8 4 ...
Truncated

Test 3

Group: 3

Verdict: ACCEPTED

input
1000
672274832941907421
260504693279721732
646999966092970935
100853063389774434
...

correct output
7
2
2
0
9
...

user output
7 2 2 0 9 7 7 2 0 4 0 3 0 5 9 ...
Truncated