Laiko ribojimas: 1s
Atminties ribojimas: 64MB
Duomenų failas: lmio_1996_3e2_rubiko_kubas.in
Rezultatų failas: lmio_1996_3e2_rubiko_kubas.out
Rubiko-kubas
Įsivaizduokite, kad turite Rubiko kubą, sudarytą iš mažų kubelių. Po kubą landžioja nykštukas. Būdamas bet kurioje kubo vietoje (bet kuriame mažame kubelyje) jis gali pasiekti bet kurį kitą kubelį. Judėti jam leidžiama lygiagrečiai kuriai nors kubo briaunai. Vienu žingsniu jis gali pereiti tik į kurį nors gretimą kubelį.
Kiekvienas mažas kubelis turi tris koordinates . Koordinatės — natūralieji skaičiai iš intervalo . Koordinačių pradžia yra bet kuri Rubiko kubo viršūnė, o , , ašys sutampa su iš tos viršūnės išeinančiomis kubo briaunomis. Kubelio prie tos viršūnės koordinatės yra (1,1,1). Paėjus vieną žingsnį kuria nors kryptimi, vienetu padidėja (arba sumažėja) ir atitinkama tos krypties koordinatė.
Per kai kuriuos kubelius negalima pralįsti – jie yra kliūtys, kurias reikia aplenkti. Tokių kliūčių kubelių yra .
Užduotis
Parašykite programą, kuri rastų trumpiausio kelio nuo kubelio iki kubelio ilgį, išreikštą žingsnių skaičiumi.
Pradiniai duomenys
Pirmoje eilutėje yra skaičius ,nurodantis Rubiko kubo dydį, antroje – taško koordinatės , , , trečioje – taško koordinatės , , , ketvirtoje – kliūčių skaičius .
Po to eina eilučių, kurių kiekvienoje yra trys skaičiai , , – kliūčių koordinatės
Rezultatai
Rezultatas – žingsnių skaičius.
Pavyzdžiai
Pradiniai duomenys | Rezultatai | Paaiškinimas |
---|---|---|
3 1 1 1 3 3 3 2 1 3 1 2 3 1 |
6 |
Reikia nukeliauti iš vieno kubo kampo į priešingą. Yra tik dvi kliūtys, bet jos kelio neprailgina. |