Naisac, în tren spre lotul de la Julc, se gândește la un arbore cu noduri, în care fiecare nod este numerotat cu un număr între și (inclusiv). De asemenea, el vă garantează ca în acest arbore, fiecare nod are maxim 3 muchii atașate de el.
Naisac, pasionat și el de informatică, nu vă va spune direct care este arborele. În schimb, pentru a îl putea afla, el vă va răspunde doar la întrebări care îi fac pe plac.
Protocol de interacțiune
Voi îl puteți întreba afișând pe o linie folosind std::cout (urmat de std::cout << std::endl):
(cu ).
El va răspunde la întrebarea: "Este ?" cu 0 sau 1, 0 reprezentând fals și 1 adevărat. Altfel văzut, el va răspunde la întrebarea "Este nodul pe drumul cel mai scurt de la la ?".
(Naisac poate răspunde și -1, dacă ați pus o întrebare invalidă sau ați depășit limita de întrebări. În acest caz, programul vostru trebuie să se oprească imediat pentru a primi Wrong Answer, altfel riscați Time Limit Exceeded).
Când sunteți siguri că știți care este arborele secret al lui Naisac, puteți afișa pe o linie folosind std::cout (urmat de std::cout << std::endl):
unde reprezintă muchiile arborelui determinat. Evident, toate muchiile afișate trebuie să fie distincte, și mai mult .
Aici se termină interacțiunea, și Naisac vă va da un număr între 0 și 100 de puncte dacă ați ghicit corect sau nu arborele, și în funcție de cât de puține întrebări ați pus.
Date de intrare
Pe prima linie, veți primi numărul .
Apoi, pentru fiecare întrebare pe care o puneți, veți primi pe o linie nouă răspunsul (-1, 0 sau 1).
Date de ieșire
Puteți afișa pe fiecare linie fie:
- " " pentru a pune o întrebare.
- " " pentru a ghici arborele.
Restricții
- Dacă puneți mai mult de întrebări, automat luați 0 puncte.
- Muchiile arborelui aflat și capetele acestora se pot afișa în orice ordine
- este numărul de muchii care se află pe cel mai scurt drum de la nodul la nodul care parcurge doar muchiile și nodurile arborelui
- Naisac nu răspunde la alte tipuri de întrebări despre arbore, dar s-ar putea să răspundă dacă îl întrebați despre snacksuri
Punctare
Dacă ați identificat corect toate muchiile arborelui, punctajul pe care îl veți primi pe test va fi calculat în funcție de numărul de întrebări pe care le-ați pus. Fie raportul .
- Dacă sau , veți primi 100% din punctajul alocat testului.
- Dacă , procentajul din punctaj se calculează după următoarea formulă:
Notă: Orice soluție care identifică arborele corect, indiferent de numărul de întrebări (atâta timp cât se respectă limita de întrebări), are asigurat un punctaj de bază de din punctajul testului.
Exemple
| Input | Ouptut | Explanation |
|---|---|---|
4 |
||
? 1 3 2 |
||
1 |
2 este pe lanțul de la 1 la 3 | |
? 1 4 3 |
||
0 |
3 nu este pe lanțul de la 1 la 4 | |
? 3 4 2 |
||
1 |
2 este pe lanțul de la 3 la 4 | |
! 1 2 2 3 2 4 |
Explicație
Arborele ascuns la care s-a gândit Gigel are noduri și următoarele muchii: . Structura este validă deoarece nodul 2 are gradul 3, iar celelalte au gradul 1.
- La prima întrebare (
? 1 3 2), concurentul întreabă dacă nodul se află pe drumul de la la . Cum drumul este , răspunsul lui Naisac este1(Adevărat). - La a doua întrebare (
? 1 4 3), concurentul întreabă dacă nodul 3 se află pe drumul de la 1 la 4 (). Răspunsul este0(Fals). - La a treia întrebare (
? 3 4 2), concurentul întreabă dacă nodul 2 se află pe drumul de la 3 la 4 (). Răspunsul este1(Adevărat).
În urma acestor deducții, concurentul a reușit să reconstituie arborele și afișează cele 3 muchii găsite: ! 1 2 2 3 2 4. (Ordinea muchiilor sau ordinea capetelor în cadrul unei muchii afișate nu contează).