Mai intai trebuie sa te autentifici.
Diferente pentru problema/perrynator intre reviziile #68 si #10
Nu exista diferente intre titluri.
Diferente intre continut:
== include(page="template/taskheader" task_id="perrynator") ==
O, nu! AgentPa căzut în capcana doctorului Doofenshmirtz! Acesta i-a dezvăluit planul său malefic, acela de a folosi ultima lui invenţie,Perrynatorul, pentru a eradica toţi ornitorincii de pe faţa Pământului. Dar Perry e mereu cu un pas înainte. Odată evadat ("în stilul său bine-cunoscut":https://www.youtube.com/watch?v=s7csirM-fLw), găseşte panoul de control al Perrynatorului.Spre mirarea lui, pentru a-şi salva specia,el trebuie să găsească o permutare secretă! Dându-i-se numărul $N$ de elemente ale permutarii, el are la dispoziţie următoarea operaţie: întreabă, pentru un set de poziţii din permutare, care este minimul dintre valorile de pe acele poziţii.Dar Doofenshmirtz îi face viaţa un calvar! După fiecare query, elementele **din afara** setului întrebat se permută cu _**o poziţie**_ +la stânga **sau** la dreapta+.Din păcate, P nu ştie să vă spună în care parte se rotesc, aşa că sunteţi pe cont propriu.
Poveste şi cerinţă...
!{width:300px; float:right;margin: 10px}problema/perrynator?Doofenshmirtz_Evil_Incorporated.jpg!
h2. Date de intrare
h2.Interacţiune
Fişierul de intrare $perrynator.in$ ...
Iniţial se citeşte din _stdin_ numărul N. Programul vostru are voie să pună query-uri scriind în _standard output_: * <tex>?</tex><tex> k</tex><tex> p_1</tex> <tex> p_2</tex> <tex> ... </tex> <tex>p_k</tex> După fiecare astfel de query interactorul vă va răspunde în _stdin_ cu un număr din mulţimea <tex> \{1, 2,.., N\} </tex>, reprezentând minimul valorilor de pe acele poziţii, **la momentul queryului.** Când sunteţi siguri că aţi aflat permutarea, afişaţi un query de forma: * <tex>!</tex><tex> p_1</tex> <tex> p_2</tex> <tex> ... </tex> <tex>p_N</tex> reprezentând permutarea **la acel moment.** Pe scurt, nu trebuie să aflaţi permutarea iniţială, ci doar cea de după queryuri. După fiecare query, inclusiv cel final trebuie să afişaţi '\n' şi să daţi flush la _standard output_. Pentru a da flush vă puteţi folosi de următorul tabel:
h2. Date de ieşire
table(example). |_. Limbaj |_. C/C++ |_. Pascal |_. Python |_. Java |_. Rust |
|Header necesar|| import sys || use std::io::{self,Write}; ||
|Header necesar| | | import sys | | use std::io::{self,Write}; |
|Funcţie|fflush(stdout) sau cout.flush()|flush(output)|sys.stdout.flush()|System.out.flush()|io::stdout().flush().unwrap();| h2. Restricţii
* 1 ≤ N ≤ 100 * Pentru teste în valoare de 20 de puncte, shiftarea se face doar la dreapta. * Pentru alte teste în valoare de 20 de puncte, N ≤ 4. * Pentru cel mult 205 query-uri (fără cel final), punctajul pe test este de 100% * Pentru mai mult de 205 query-uri (fără cel final), punctajul pe test este de 50% * Pentru mai mult de 10000 query-uri (fără cel final), punctajul pe test este de 0%
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example). |_. stdin |_. stdout | | 5 3 2 | ? 1 3 ? 2 1 4 ! 5 3 4 2 1|
table(example). |_. perrynator.in |_. perrynator.out | | This is some text written on multiple lines. | This is another text written on multiple lines. |
h3. Explicaţie
Permutarea secretă era <tex>1\;2\;3\;4\;5</tex>. După primul query, Perry primeşte numărul 3, semnificând chiar că pe poziţia 3 se află 3, iar permutarea putea deveni: *<tex>2\;4\;3\;5\;1</tex>$, adică permutare la stânga.$ *<tex>5\;1\;3\;2\;4</tex>$, adică permutare la dreapta.$ deoarece poziţia 3 rămâne pe loc, iar celelalte se pot permuta la stânga **sau** la dreapta. Perrynatorul a ales să fie <tex>5\;1\;3\;2\;4</tex>, adică la dreapta. La fel, după al doilea query, Perry primeşte $min(5,2) = 2$, permutarea putând deveni: *<tex>5\;4\;1\;2\;3</tex>$, la dreapta.$ *<tex>5\;3\;4\;2\;1</tex>$, la stânga.$ Perrynatorul a ales-o pe <tex>5\;3\;4\;2\;1</tex>, adică la stânga, iar Perry pur şi simplu a ghicit-o şi şi-a salvat specia. Reamintim că Perrynatorul nu este nici sub controlul nostru, noi îl ajutăm pe Perry, aşa că nici noi nu ştim în ce parte alege să permute.
...
== include(page="template/taskfooter" task_id="perrynator") ==