evo

Time limit: 0.2s Memory limit: 18MB Input: evo.in Output: evo.out

Este binecunoscut faptul că informaţia genetică a unui organism poate fi codificată sub forma unui şir format din simboluri din mulţimea {g,a,t,c}\{g, a, t, c\}. Pornind de la această codificare biologii au identificat 33 operaţii asupra şirurilor de simboluri, operaţii care pot modela evoluţia anumitor organisme.

  1. Complementaritate. Simbolul aa este complementarul lui tt (şi reciproc), iar simbolul cc este complementarul lui gg (şi reciproc). Pentru un simbol xx vom nota cu c(x)c(x) complementarul său. Prin extensie, dacă ww este un şir de simboluri din mulţimea {a,c,g,t}\{a, c, g, t\} notăm cu c(w)c(w) şirul obţinut prin complementarea simbolurilor lui ww. De exemplu, pentru w=aaactgw = aaactg, avem c(w)=tttgacc(w) = tttgac.
  2. Oglindire. Vom nota prin wRw_R şirul obţinut prin oglindirea lui ww. De exemplu pentru w=aaagatatw = aaagatat, wR=tatagaaaw_R = tatagaaa.
  3. Hairpin. Pentru un şir de simboluri ww, care poate fi descompus în patru subşiruri w1w2w3w4w_1 w_2 w_3 w_4 (unele dintre cele patru siruri pot fi vide) prin operaţia hairpin se obţine: w1w2w3w4c(w1)Rw_1 w_2 w_3 w_4 c(w_1)R, dacă w2=c(w4)Rw_2 = c(w_4)R şi lungimea lui w2w_2 este mai mare sau egală cu 11, sau c(w4)Rw1w2w3w4c(w_4) R w_1 w_2 w_3 w_4, dacă w1=c(w3)Rw_1 = c(w_3)R şi lungimea lui w1w_1 este mai mare sau egală cu 11.
    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 SS formată din nn şiruri de simboluri din mulţimea {a,c,g,t}\{a, c, g, t\}. Mulţimea SS 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ă SS.

Cerinţă

Date fiind cele nn şiruri din mulţimea iniţială SS şi o succesiune de mm şiruri de simboluri, să se decidă care dintre cele mm ş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 n+m+2n+m+2 linii. Pe prima linie este scris numărul natural nn reprezentând numărul de numărul de şiruri din mulţimea iniţială SS. Urmează nn linii, pe fiecare linie fiind scris un şir din mulţimea SS. Pe linia n+2n+2 este scris numărul natural mm, reprezentând numărul de şiruri care trebuie să fie analizate. Pe următoarele mm linii sunt scrise cele mm ş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 mm linii, câte una pentru fiecare şir de analizat. Pe linia ii se va scrie cuvântul da, dacă al ii-lea şir dintre cele mm şiruri de analizat poate fi codul genetic al unei omizi, respectiv cuvântul nu, în caz contrar.

Restricţii şi precizări

  • 0<n<50 < n < 5, 0<m<1 0010 < m < 1 \ 001
  • Lungimea unui şir din mulţimea iniţială SS este mai mică decât 101101.
  • Lungimea totală a şirurilor de analizat este mai mică decât 16 00116 \ 001. Lungimea fiecărui şir de analizat este mai mică decât 4 0014 \ 001.
  • În 55%55\% din teste lungimea maximă a unui şir de analizat este 700700.

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 w1=gaw_1 = ga, w2=aw_2 = a, w3=aaw_3 = aa, w4=tw_4 = t).
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 w1=acw_1 = ac, w2w_2 = şir vid, w3=gtw_3 = gt, w4=cgw_4 = cg, operaţia de hairpin adăugând c(w4)Rc(w_4)R la începutul şirului, şi apoi din cgacgtcg obţinem cgacgtcgtcg pentru w1=cgaw_1 = cga, w2=cw_2 = c, w3=gtcw_3 = gtc şi w4=gw_4 = g, operaţia de hairpin adăugând c(w1)Rc(w_1)R la sfârşitul şirului.

Log in or sign up to be able to send submissions!