Task: | Kolikot |
Sender: | yhyy |
Submission time: | 2016-10-03 21:19:55 +0300 |
Language: | Assembly |
Status: | READY |
Result: | 57 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 22 |
#2 | ACCEPTED | 35 |
#3 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.06 s | 1 | details |
#2 | ACCEPTED | 0.06 s | 1 | details |
#3 | ACCEPTED | 0.07 s | 1 | details |
#4 | ACCEPTED | 0.06 s | 1 | details |
#5 | ACCEPTED | 0.06 s | 1 | details |
#6 | ACCEPTED | 0.05 s | 2 | details |
#7 | ACCEPTED | 0.06 s | 2 | details |
#8 | ACCEPTED | 0.07 s | 2 | details |
#9 | ACCEPTED | 0.06 s | 2 | details |
#10 | ACCEPTED | 0.05 s | 2 | details |
#11 | ACCEPTED | 0.06 s | 3 | details |
#12 | ACCEPTED | 0.05 s | 3 | details |
#13 | ACCEPTED | 0.07 s | 3 | details |
#14 | ACCEPTED | 0.06 s | 3 | details |
#15 | WRONG ANSWER | 0.07 s | 3 | details |
#16 | ACCEPTED | 0.06 s | 3 | details |
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: WRONG ANSWER
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 |