În viitor Concursul "Urmaşii lui Moisil" va avea, cu siguranţă, şi o secţiune de robotică. Anul acesta însă nu trebuie să proiectaţi un robot, trebuie doar să scrieţi aplicaţia pentru robotul respectiv.
Robotul nostru, să-l numim Moisil, în onoarea patronului acestui concurs, procesează un șir format din numere întregi, indexate de la la .
Notăm cu secvența formată din elementele . Definim frecvența unei valori într-o secvență ca fiind numărul de apariții ale acelei valori în secvența respectivă.
O întrebare este definită printr-o pereche de valori () şi solicită robotului să afişeze un mesaj referitor la frecvenţa valorilor din secvenţa .
Mesajele care se afişează depind de modul de funcţionare selectat pentru robot. Înainte de a primi lista de întrebări, se stabileşte un mod de funcţionare, iar robotul va răspunde în funcţie de modul de funcţionare selectat. Există 3 moduri de funcţionare posibile:
- High. În acest mod robotul poate furniza, la fiecare întrebare, unul dintre următoarele mesaje:
Mesaj | Semnificație |
---|---|
!1 |
toate valorile din secvența au frecvența |
!2 |
toate valorile din secvența au frecvența |
!1!2 |
toate valorile din secvența au frecvența și există cel puțin două valori cu frecvențe diferite |
x |
niciunul dintre cazurile de mai sus |
- Medium. În acest mod robotul poate furniza, la fiecare întrebare, unul dintre următoarele mesaje:
Mesaj | Semnificație |
---|---|
!1 |
toate valorile din secvența au frecvența |
?1!2 |
toate valorile din secvența au frecvența , știm că există valori cu frecvența , dar nu știm sigur dacă există valori cu frecvența |
x |
niciunul dintre cazurile de mai sus |
- Low. În acest mod robotul poate furniza, la fiecare întrebare, unul dintre următoarele mesaje:
Mesaj | Semnificație |
---|---|
!1 |
toate valorile din secvența au frecvența |
x |
niciunul dintre cazurile de mai sus |
Cerință
Scrieţi un program care selectează un mod de funcţionare pentru robot şi afişează răspunsurile date de robot în modul de funcţionare ales pentru o listă de întrebări.
Date de intrare
Fişierul de intrare robot.in
conţine pe prima linie numerele naturale și , având semnificaţia din enunţ. A doua linie conține numere întregi, care reprezintă elementele . Pe următoarele linii se află cele întrebări, în forma descrisă în enunţ, câte o întrebare pe o linie. Valorile scrise pe aceeaşi linie sunt separate prin câte un spaţiu.
Date de ieşire
Fişierul de ieşire robot.out
conţine linii. Pe prima linie este scrisă litera H
, M
sau L
, după cum modul de funcţionare selectat pentru robot este High, Medium sau Low. Pe următoarele linii sunt scrise, în ordine, mesajele afişate de robot ca răspuns la cele întrebări din fişierul de intrare.
Restricții și precizări
- , pentru orice
- Dacă modul de funcționare selectat pentru robot este Low, se acordă 50% din punctajul pe test.
- Dacă modul de funcționare selectat pentru robot este Medium, se acordă 80% din punctajul pe test.
- Dacă modul de funcționare selectat pentru robot este High, punctajul pe test se acordă integral.
# | Punctaj | Restricții |
---|---|---|
1 | 22 | și , pentru orice |
2 | 18 | și , pentru orice |
3 | 32 | și , pentru orice |
4 | 28 | și , pentru orice |
Exemplu
robot.in
10 4
1 2 3 1 2 2 3 3 3 1
3 5
1 5
1 6
5 8
robot.out
(modul High)
H
!1
!1!2
x
!2
robot.out
(modul Medium)
M
!1
?1!2
x
?1!2
robot.out
(modul Low)
L
!1
x
x
x
Explicație
Prima întrebare este . În secvenţa apar valori (, şi ) fiecare având frecvenţa . În toate cele 3 moduri de funcţionare robotul va afişa mesajul !1
.
A doua întrebare este . În secvenţa există valori (, şi ), având frecvenţele , , respectiv . În modul High robotul va răspunde !1!2
, în modul Medium robotul va răspunde ?1!2
, iar în modul Low robotul va răspunde x
.
A treia întrebare este . În secvenţa există valori (, şi ), având frecvenţele , , respectiv . În toate cele 3 moduri mesajul afişat este x
.
A patra întrebare este . În secvenţa există valori ( şi ), fiecare având frecvenţa . În modul High robotul va răspunde !2
, în modul Medium robotul va răspunde ?1!2
, iar în modul Low robotul va răspunde x
.