Mai intai trebuie sa te autentifici.
Diferente pentru problema/interact intre reviziile #47 si #69
Nu exista diferente intre titluri.
Diferente intre continut:
Comisia are un şir secret $s$ format din $N$ (1 ≤ $N ≤ 100$ ) caractere mici ( $a - z$ ) ale alfabetului englez iar voi trebuie să ghiciti şirul. Aveti la dispozitie următoarele tipuri de operatii:
$? t$ - Este $t$ subsir in sirul secret $s$? Daca da, comisia va afişa $1$, altfel va afisa $0$. Lungimea lui $t$ nu trebuie sa depaseasca *1000* de caractere.
$? t$ - Este $t$ subsir in sirul secret $s$? Daca da, comisia va afişa $1$, altfel va afisa $0$. Lungimea lui $t$ nu trebuie sa depaseasca *100* de caractere.
$! str$ - Sirul secret este $str$. Aceasta operatie poate fi facuta o singura data, iar comisia va va rasplati corespunzator.
*ATENŢIE: Fiecare operaţie trebuie afişată pe o linie nouă!*
Puteti face maxim *6000* de operatii. h2. Interactiune
Formal, $t$ este subşir în $s$ dacă $t$ se poate obţine din $s$ eliminând 0 sau mai multe caractere şi păstrând ordinea relativă a caracterelor neeliminate. Spre ex: $for$, $if$, $arena$ sunt subisiruri ale sirului $infoarena$.
Problema aceasta este interactiva. Initial veti putea citi de la $stdin$ numarul $N$ reprezentand lungimea sirului secret. Pentru fiecare operatie veti proceda astfel: veti afisa la $stdout$ operatia si veti da $flush$ la $stdout$ (de exemplu cu $fflush(stdout)$ in $C$ sau cu $std::cout << std::flush$ în $C++$). Apoi cititi raspunsul la operatia voastra din $stdin$ ($1$ sau $0$ in cazul in care operatia voastra a fost de tipul $? t$ *SAU* $-1$ cand se inchide programul (OK sau cu eroare). Cand primiti -1 de la comisie, trebuie sa opriti executia programului (de exemplu $return 0$). DE ADAUGAT IN ENUNT:
Puteti face maxim *6000* de operatii.
-LA UN QUERY - SIRUL DE QUERY ARE LUNGIME MAXIM 1000
h2. Interactiune
- OPERATIA ! ESTE TOT UN QUERY SI SE NUMARA LA LIMITA DE $6000$
Problema aceasta este 'interactiva':http://chiefcustomerofficer.eu/wp-content/uploads/2014/06/customerinteraction.jpg. Pentru fiecare operatie veti proceda astfel: veti afisa la $stdout$ operatia si veti da $flush$ la $stdout$ (de exemplu cu $fflush(stdout)$ in $C$ sau cu $std::cout << std::flush$ în $C++$ ). Apoi veti citi raspunsul la operatia voastra din $stdin$ :
- DE FACUT DE ASA NATURA CAND INTERACTIUNEA SE OPRESTE SA AFISAM UN TOKEN GEN "OK / BAD" ^ \--- COMISIA AFISEAZA -1 CAND SE INCHIDE PROGRAMUL (OK SAU EROARE). CONCURENTUL TRE SA DEA RETURN LA PRIMUL -1 INTALNIT
* $1$ sau $0$ in cazul in care operatia voastra a fost de tipul $? t$; * $-1$ cand se inchide programul, si trebuie oprita executia acestuia (de exemplu $return 0$). Puteti primi $-1$ in 3 cazuri: fie ati ghicit sirul, fie nu l-ati ghiciti, fie ati afisat o operatie ce nu este valida.
h2. Restricţii * $1 ≤ N ≤ 100$ * $Pentru teste în valoare de 30 de puncte, N ≤ 20$
* Puteti folosi *o singura data* operatia $! str$ !!! * Formal, $t$ este subşir în $s$ dacă $t$ se poate obţine din $s$ eliminând 0 sau mai multe caractere şi păstrând ordinea relativă a caracterelor neeliminate. Spre ex: $for$, $if$, $arena$ sunt subisiruri ale sirului $infoarena$.
* $Puteti folosi *o singura data* operatia ! str$ * $Daca nu opriti executia programului folosind return 0 dupa ce primiti răspunsul -1, evaluatorul va afisa mesajul KILLED BY SIGNAL 11$ * $*Dacă nu afişaţi caracterul newline '\n' după fiecare operaţie, evaluatorul va afisa mesajul WALL TIME LIMIT EXCEEDED*$
h2. Exemplu table(example). |_. stdout |_. stdin |_. Explicatie |
| | 3 | N = 3 |
| ? a | 1 | a este subir in sirul secret
| | ! abc | -1
| abcestechiarsirulsecret!
| ati incercat sa ghiciti sirul $abc$ si programul se termina
|