Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2019-06-30 14:06:09.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:mixedsignals.in, mixedsignals.outSursăJunior Challenge 2019
AutorBogdan SitaruAdăugată deJuniorChallenge2019Junior Challenge 2019 JuniorChallenge2019
Timp execuţie pe test0.5 secLimită de memorie131072 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Mixed Signals

Sperand sa descifreze semnalele mixte, Petrica a decis ca vrea sa inteleaga o data pentru totdeauna cum socializeaza oamenii, asa ca s-a inscris in Semicercul Dopatilor Anonimi.

Aici el a gasit N oameni asezati intr-un patrat, numerotati de la 1 la N, identificand 3 tipuri de persoane:

  • persoane care spun mereu adevarul, avand incredere in restul grupului
  • persoane care mint mereu, vorbind mereu fals
  • persoane mute, care doar asculta discutiile

Fiind un semicerc de oameni sociabili, exista cel mult {N/2} oameni muti, iar fiecare persoana stie despre orice alta persoana ce tip de om este.

Dorind sa se integreze in grup, protagonistul nostru s-a hotarat sa afle ce tip de om e fiecare punand urmatoarele intrebari:

  1. Petrica il intreaba pe X_1 ce ar zice X_2 daca ar fi intrebat ce ar zice X_3 daca ar fi intrebat ce ar zice X_4 .... daca ar fi intrebat ce zice X_{K-1} despre X_K, unde X_1, X_2, ... X_K, cu K \ge 2, sunt persoane diferite din grup.
      De exemplu: pentru K=2, Petrica il intreaba pe X_1 daca X_2 minte sau nu
      pentru K=3, Petrica il intreaba pe X_1 ce ar zice X_2 daca e intrebat de X_3 daca minte sau nu
      Daca vreuna dintre persoanele X_1, X_2, ..., X_K este muta, atunci Petrica nu va primi niciun raspuns.
  2. Petrica afla prin intuitia sa ce tip de om este X (acesta nu isi poate folosi intuitia de mai mult de 5 ori intr-o situatie)

Interactiune

Pentru fiecare test trebuie procesate mai multe situatii.
Astfel, prima linie val contine un numar natural T, reprezentand numarul de situatii.

Pentru fiecare situatie, pe prima linie va fi un numar natural N, reprezentand numarul de oameni.

Programul vostru are voie sa puna intrebari scriind in standard output:

  • "1 \: \: K \: X_1 \: X_2 \: ... \: X_K" reprezentand o intrebare de tipul 1
  • "2 \: \: X" reprezentand o intrebare de tipul 2
  • "0 \: \: T_1 \: T_2 \: ... \: T_N" reprezentand raspunsul

Pentru fiecare intrebare de tipul 1 sau 2, interactorul o sa raspunda in standard input cu:

  • "0" daca X_1 zice ca X_2 zice ca ... X_K spune mereu adevarul sau X spune adevarul (in cazul unei intrebari de tipul 2)
  • "1" daca X_1 zice ca X_2 zice ca ... X_K minte mereu sau X minte (in cazul unei intrebari de tipul 2)
  • "2" daca printer X_1, X_2, ..., X_K este vreun mut sau X este mut (in cazul unei intrebari de tipul 2).

Daca dupa vreo intrebare raspunsul este -1, intrebarea este invalida, iar programul trebuie sa se termine imediat.

Pentru fiecare situatie, operatia "0" va fi apelata fix o singura data.

Citirea si afisarea se vor face cu standard input/output.
Dupa fiecare operatie trebuie afisat caracterul newline('\n' sau endl).
Incercarea de-a deschide vreun fisier poate duce la o eroare in executarea programului vostru.
Nu uitati sa dati flush la bufferul de iesire, cu cout.flush() sau fflush(stdout).

Restricţii

  • 1 ≤ T ≤ 20
  • 5 ≤ N ≤ 300
  • Vor exista mereu cel putin 3 oameni care nu sunt muti.
  • Cel mult jumatate din oameni sunt muti.
  • Pentru o situatie, intrebarea de tip 2 poate fi apelata de maxim 5 ori.

Punctare

Testele respecta urmatoarele:

Numar testLimita NContine persoane mutePunctaj maxim
115NU10
2100NU20
3300NU30
420DA10
5100DA10
6300DA20

Pentru testele care nu contin persoane mute, se puncteaza astfel, in functie de numarul de intrebari de tipul 1 (notat cu Q):

  • Q ≤ N, 100% din punctajul pe acel test
  • N < Q ≤ N + 5, 80% din punctajul pe acel test
  • N + 5 < Q ≤ 2 * N + 10, 60% din punctajul pe acel test
  • 2 * N + 10 < Q, 20% din punctajul pe acel test

Pentru testele care contin persoane mute, se puncteaza astfel, in functie de numarul de intrebari de tipul 1 (notat cu Q):

  • Q ≤ N + 15, 100% din punctajul pe acel test
  • N + 15 < Q ≤ 2 * N + 10, 60% din punctajul pe acel test
  • 2 * N + 10 < Q, 20% din punctajul pe acel test

Pentru folosirea unei intrebari de tipul 2 nu se acorda decat jumatate din punctajul testului.

Exemplu

standard inputstandard output
1
4

2

1

0

0
‏‏‎

1 2 1 2

1 2 1 3

2 1

2 4

0 0 2 1 0

Explicaţie

  • Din prima intrebare, 1 sau 2 sunt muti.
  • Din a doua intrebare, 1 spune ca 3 minte.
  • Din a 3-a intrebare, 1 spune adevarul.
  • Din a 4-a intrebare, 4 spune adevarul.

Se poate demonstra ca singura solutie valida este cand: