CSES - Datatähti 2018 alku - Results
Submission details
Task:Kyselyt
Sender:yhyy
Submission time:2017-10-15 23:39:20 +0300
Language:Assembly
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED12
#2ACCEPTED25
#3ACCEPTED63
Test results
testverdicttimegroup
#1ACCEPTED0.07 s1details
#2ACCEPTED0.06 s2details
#3ACCEPTED0.07 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
;) ****************** 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