Task: | Ratsun reitit |
Sender: | hltk |
Submission time: | 2020-09-30 22:44:13 +0300 |
Language: | Assembly |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 27 |
#2 | ACCEPTED | 31 |
#3 | ACCEPTED | 42 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#2 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#3 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#4 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#5 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#6 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#7 | ACCEPTED | 0.00 s | 1, 2, 3 | details |
#8 | ACCEPTED | 0.01 s | 2, 3 | details |
#9 | ACCEPTED | 0.01 s | 2, 3 | details |
#10 | ACCEPTED | 0.00 s | 2, 3 | details |
#11 | ACCEPTED | 0.01 s | 3 | details |
#12 | ACCEPTED | 0.01 s | 3 | details |
#13 | ACCEPTED | 0.01 s | 3 | details |
Code
%macro r1_push 0 ; push registers except raxpush rbxpush rcxpush rdxpush r8push r9push r10push r11%endmacro%macro r1_pop 0 ; pop registers except raxpop r11pop r10pop r9pop r8pop rdxpop rcxpop rbx%endmacro%macro r_push 0 ; push registers including raxpush raxr1_push%endmacro%macro r_pop 0 ; pop registers including raxr1_poppop rax%endmacro%define IBUFSZ 100%define OBUFSZ 30000%define QUEUESZ 15000%define MAXN 100%define DISTSZ MAXN * MAXNsection .rodataci:dq 1dq 1dq -1dq -1dq 2dq 2dq -2dq -2cj:dq 2dq -2dq 2dq -2dq 1dq -1dq 1dq -1section .bssibuf resb IBUFSZobuf resb OBUFSZqueuei resq QUEUESZqueuej resq QUEUESZdist resq DISTSZN resq 1section .textglobal _start_start:xor rax, rax.floop:mov qword [dist + rax * 8], -1inc raxcmp rax, DISTSZjl .floop; read ibufxor rax, raxxor rdi, rdimov rsi, ibufmov rdx, IBUFSZsyscallmov rsi, ibufmov rdi, obuf ; älä sotke rdi:tä..call stoimov [N], raxxor rax, rax ; headxor rbx, rbx ; tail; while (head < tail)mov qword [queuei + rbx], 0mov qword [queuej + rbx], 0mov qword [dist], 0inc rbx.bfs:mov r8, [queuei + rax * 8]mov r9, [queuej + rax * 8]imul r8, 800imul r9, 8mov r10, [dist + r8 + r9]inc r10mov rdi, obufxor rcx, rcx.cloop:mov r8, [queuei + rax * 8]mov r9, [queuej + rax * 8]add r8, [ci + rcx * 8]add r9, [cj + rcx * 8]cmp r8, 0jl .cloopnxtcmp r9, 0jl .cloopnxtcmp r8, [N]jge .cloopnxtcmp r9, [N]jge .cloopnxtmov r11, r8imul r11, 100add r11, r9mov r11, [dist + r11 * 8]cmp r11, -1jne .cloopnxtmov [queuei + rbx * 8], r8mov [queuej + rbx * 8], r9imul r8, 800imul r9, 8mov [dist + r8 + r9], r10inc rbx.cloopnxt:inc rcxcmp rcx, 8jl .cloopinc raxcmp rax, rbxjl .bfsxor rax, rax.pl:xor rbx, rbx.pll:push raximul rax, 100add rax, rbxmov rax, [dist + rax * 8]call printimov rax, 0x20stosbpop raxinc rbxcmp rbx, [N]jl .pllpush raxmov rax, 0xastosbpop raxinc raxcmp rax, [N]jl .pl; output obufsub rdi, obufmov rdx, rdimov rdi, 1mov rax, 1mov rsi, obufsyscall; exit syscallmov rax, 0x3cxor rdi, rdisyscallstoi: ; reads in integer from rsi s buffer and outputs it to raxr1_pushxor r8,r8mov r9, 1.a_stoi:xor rax, raxlodsbcmp al, 45jne .b_stoimov r9, -1jmp .a_stoi.b_stoi:cmp al, 32je .c_stoicmp al, 10je .c_stoicmp al, 0je .c_stoisub al, 48mov rdx, 10imul r8, rdxadd r8, raxjmp .a_stoi.c_stoi:mov rax, r8imul rax, r9r1_popretprinti: ; outputs an integer rdi s bufferpush raxr1_pushxor rbx, rbxcmp rax, 0jnl .a_printiimul rax, -1push raxmov rax, 45stosbpop rax.a_printi:xor rdx, rdxmov rcx, 10idiv rcxadd rdx, 48push rdxinc rbxcmp rax, 0jne .a_printimov rcx, rbx.b_printi:pop raxstosbloop .b_printimov rax, rdir1_popmov rdi, raxpop raxret
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
4 |
correct output |
---|
0 3 2 5 3 4 1 2 2 1 4 3 5 2 3 2 |
user output |
---|
0 3 2 5 3 4 1 2 2 1 4 3 5 2 3 2 |
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
5 |
correct output |
---|
0 3 2 3 2 3 4 1 2 3 2 1 4 3 2 3 2 3 2 3 2 3 2 3 4 |
user output |
---|
0 3 2 3 2 3 4 1 2 3 2 1 4 3 2 3 2 3 2 3 2 3 2 3 4 |
Test 3
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
6 |
correct output |
---|
0 3 2 3 2 3 3 4 1 2 3 4 2 1 4 3 2 3 3 2 3 2 3 4 2 3 2 3 4 3 ... |
user output |
---|
0 3 2 3 2 3 3 4 1 2 3 4 2 1 4 3 2 3 3 2 3 2 3 4 2 3 2 3 4 3 ... |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
7 |
correct output |
---|
0 3 2 3 2 3 4 3 4 1 2 3 4 3 2 1 4 3 2 3 4 3 2 3 2 3 4 3 2 3 2 3 4 3 4 ... |
user output |
---|
0 3 2 3 2 3 4 3 4 1 2 3 4 3 2 1 4 3 2 3 4 3 2 3 2 3 4 3 2 3 2 3 4 3 4 ... Truncated |
Test 5
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
8 |
correct output |
---|
0 3 2 3 2 3 4 5 3 4 1 2 3 4 3 4 2 1 4 3 2 3 4 5 3 2 3 2 3 4 3 4 2 3 2 3 4 3 4 5 ... |
user output |
---|
0 3 2 3 2 3 4 5 3 4 1 2 3 4 3 4 2 1 4 3 2 3 4 5 3 2 3 2 3 4 3 4 2 3 2 3 4 3 4 5 ... Truncated |
Test 6
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
9 |
correct output |
---|
0 3 2 3 2 3 4 5 4 3 4 1 2 3 4 3 4 5 2 1 4 3 2 3 4 5 4 3 2 3 2 3 4 3 4 5 2 3 2 3 4 3 4 5 4 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 3 4 1 2 3 4 3 4 5 2 1 4 3 2 3 4 5 4 3 2 3 2 3 4 3 4 5 2 3 2 3 4 3 4 ... Truncated |
Test 7
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
10 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 3 4 1 2 3 4 3 4 5 6 2 1 4 3 2 3 4 5 4 5 3 2 3 2 3 4 3 4 5 6 2 3 2 3 4 3 4 5 4 5 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 3 4 1 2 3 4 3 4 5 6 2 1 4 3 2 3 4 5 4 5 3 2 3 2 3 4 3 4 5 6 2 3 2 ... Truncated |
Test 8
Group: 2, 3
Verdict: ACCEPTED
input |
---|
25 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... Truncated |
Test 9
Group: 2, 3
Verdict: ACCEPTED
input |
---|
49 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... Truncated |
Test 10
Group: 2, 3
Verdict: ACCEPTED
input |
---|
50 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... Truncated |
Test 11
Group: 3
Verdict: ACCEPTED
input |
---|
75 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... Truncated |
Test 12
Group: 3
Verdict: ACCEPTED
input |
---|
99 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... Truncated |
Test 13
Group: 3
Verdict: ACCEPTED
input |
---|
100 |
correct output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... |
user output |
---|
0 3 2 3 2 3 4 5 4 5 6 7 6 7 8 ... Truncated |