Este binecunoscut faptul că informaţia genetică a unui organism poate fi codificată sub forma unui şir format din simboluri din mulţimea . Pornind de la această codificare biologii au identificat operaţii asupra şirurilor de simboluri, operaţii care pot modela evoluţia anumitor organisme.
- Complementaritate. Simbolul este complementarul lui (şi reciproc), iar simbolul este complementarul lui (şi reciproc). Pentru un simbol vom nota cu complementarul său. Prin extensie, dacă este un şir de simboluri din mulţimea notăm cu şirul obţinut prin complementarea simbolurilor lui . De exemplu, pentru , avem .
- Oglindire. Vom nota prin şirul obţinut prin oglindirea lui . De exemplu pentru , .
- Hairpin. Pentru un şir de simboluri , care poate fi descompus în patru subşiruri (unele dintre cele patru siruri pot fi vide) prin operaţia hairpin se obţine: , dacă şi lungimea lui este mai mare sau egală cu , sau , dacă şi lungimea lui este mai mare sau egală cu .
Dacă ambele condiţii sunt verificate, oricare dintre cele două şiruri se poate obţine.
În gradina Acolor a fost descoperită o specie de omizi cu simţ artistic. Informaţia genetică a omizilor este codificată printr-o mulţime formată din şiruri de simboluri din mulţimea . Mulţimea este denumită mulţime iniţială. În evoluţia omizilor, informaţia genetică iniţială a suferit o serie de modificări. Pentru omizi, toate aceste modificări pot fi descrise prin aplicarea operaţiei hairpin de un număr arbitrar de ori asupra şirurilor din mulţimea iniţială .
Cerinţă
Date fiind cele şiruri din mulţimea iniţială şi o succesiune de şiruri de simboluri, să se decidă care dintre cele şiruri poate reprezenta codul genetic al unei omizi, cod obţinut prin aplicarea unor operaţii hairpin.
Date de intrare
Fişierul de intrare evo.in
conţine linii. Pe prima linie este scris numărul natural reprezentând numărul de numărul de şiruri din mulţimea iniţială . Urmează linii, pe fiecare linie fiind scris un şir din mulţimea . Pe linia este scris numărul natural , reprezentând numărul de şiruri care trebuie să fie analizate. Pe următoarele linii sunt scrise cele şiruri care trebuie analizate, câte un şir pe o linie.
Date de ieşire
Fişierul de ieşire evo.out
va conţine linii, câte una pentru fiecare şir de analizat. Pe linia se va scrie cuvântul da
, dacă al -lea şir dintre cele şiruri de analizat poate fi codul genetic al unei omizi, respectiv cuvântul nu, în caz contrar.
Restricţii şi precizări
- ,
- Lungimea unui şir din mulţimea iniţială este mai mică decât .
- Lungimea totală a şirurilor de analizat este mai mică decât . Lungimea fiecărui şir de analizat este mai mică decât .
- În din teste lungimea maximă a unui şir de analizat este .
Exemplu
evo.in
2
acgtcg
gaaaat
4
gaaaat
gaaaatcc
gaaaattc
cgacgtcgtcg
evo.out
da
nu
da
da
Explicație
Primul şir de analizat este gaaaat
. Acesta poate fi obţinut din gaaaat
făra a aplica vreo operaţie hairpin.
Al doilea şir de analizat este gaaattc
. Acesta nu poate fi obţinut prin aplicarea operaţiei hairpin asupra şirurilor acgtcg
sau gaaaat
.
Al treilea şir de analizat este gaaaattc
. Acesta se obţine aplicând operaţia hairpin o singură dată asupra şirului gaaaat
(considerând , , , ).
Al patrulea şir de analizat este cgacgtcgtcg
. Acesta se poate obţine din acgtcg
aplicând de două ori operaţia hairpin (din acgtcg
obţinem cgacgtcg
pentru , = şir vid, , , operaţia de hairpin adăugând la începutul şirului, şi apoi din cgacgtcg
obţinem cgacgtcgtcg
pentru , , şi , operaţia de hairpin adăugând la sfârşitul şirului.