extern io_get_dec
extern io_print_dec
section .bss
n resd 1
m resd 1
k resd 1
d resd 1
x resd 1
y resd 1
box resd 1
beet resd 1
r resd 1
cnt_without_last_box resd 1
cnt_last_box resd 1
ans resd 1
section .text
global main
main:
call io_get_dec
mov [n], eax
call io_get_dec
mov [m], eax
call io_get_dec
mov [k], eax
call io_get_dec
mov [d], eax
call io_get_dec
mov [x], eax
call io_get_dec
mov [y], eax
mov eax, [n]
imul eax, [m]
imul eax, [k]
mov [beet], eax
;beet - всего свекол
xor edx, edx
div dword [d]
mov [box], eax
mov [r], edx
;box - сколько всего полных коробок
;r - сколько в последней коробке
add eax, 2
xor edx, edx
mov ebx, 3
div ebx
imul eax, 3
mov [cnt_without_last_box], eax
;cnt_without_last_box = (box + 2) / 3 * d
add dword [box], 1
xor edx, edx
mov eax, [box]
mov ebx, 3
div ebx
mov eax, edx
add eax, 1
xor edx, edx
mov ebx, 2
div ebx
mov [cnt_last_box], ebx
;eax - добавляем элементы из последней коробки?
;cnt_last_box = (box % 3 != 0) * r
;box - сколько всего коробок
imul eax, [cnt_last_box]
add eax, [cnt_without_last_box]
mov [ans], eax
;ans - ответ для ночи
;(ans && ночь) || (beet && день)
sub dword [x], 5
;если ночь - то отрицательное
sar dword [x], 31
;ночь x=-1, день x=0
add dword [x], 1
;ночь x=0, день x=1
mov eax, [beet]
imul eax, [x]
mov [beet], eax
sub dword [x], 1
neg dword [x]
;день x=0, ночь x=1
mov eax, [x]
imul eax, [ans]
add eax, [beet]
call io_print_dec
xor eax, eax
ret