Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | mixedsignals.in, mixedsignals.out | Sursă | Junior Challenge 2019 |
Autor | Bogdan Sitaru | Adăugată de | Junior Challenge 2019 •JuniorChallenge2019 |
Timp execuţie pe test | 0.5 sec | Limită de memorie | 131072 kbytes |
Scorul tău | N/A | Dificultate | N/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 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 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:
- Petrica il intreaba pe ce ar zice daca ar fi intrebat ce ar zice daca ar fi intrebat ce ar zice .... daca ar fi intrebat ce zice despre , unde , cu , sunt persoane diferite din grup.
De exemplu: pentru , Petrica il intreaba pe daca minte sau nu
pentru , Petrica il intreaba pe ce ar zice daca e intrebat de daca minte sau nu
Daca vreuna dintre persoanele este muta, atunci Petrica nu va primi niciun raspuns. - Petrica afla prin intuitia sa ce tip de om este (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 , reprezentand numarul de situatii.
Pentru fiecare situatie, pe prima linie va fi un numar natural , reprezentand numarul de oameni.
Programul vostru are voie sa puna intrebari scriind in standard output:
- "" reprezentand o intrebare de tipul 1
- "" reprezentand o intrebare de tipul 2
- "" reprezentand raspunsul
Pentru fiecare intrebare de tipul 1 sau 2, interactorul o sa raspunda in standard input cu:
- "0" daca zice ca zice ca ... spune mereu adevarul sau spune adevarul (in cazul unei intrebari de tipul 2)
- "1" daca zice ca zice ca ... minte mereu sau minte (in cazul unei intrebari de tipul 2)
- "2" daca printer este vreun mut sau este mut (in cazul unei intrebari de tipul 2).
Daca dupa vreo intrebare raspunsul este , 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 test | Limita N | Contine persoane mute | Punctaj maxim |
---|---|---|---|
1 | 15 | NU | 10 |
2 | 100 | NU | 20 |
3 | 300 | NU | 30 |
4 | 20 | DA | 10 |
5 | 100 | DA | 10 |
6 | 300 | DA | 20 |
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 input | standard 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:
- 1 spune adevarul
- 2 este mut
- 3 minte
- 4 spune adevarul
Trebuie sa te autentifici pentru a trimite solutii. Click aici