Va era dor de Algorel? Iată ca au venit Stelele si e timpul sa apara iar în viaţa mondenă. De data asta concursul l-a prins uitându-se la un serial de desene animate. Cum tocmai a facut rost de un nou sezon ce are N episoade, Algorel ar vrea sa stie in ce ordine ar putea sa le vada. El stie de la un prieten o expresie care descrie cum se leaga episoadele intre ele. Expresia data respecta anumite reguli:
* intr-o expresie pot aparea numerele de la 1 la N (fiecarui episod ii corespunde un numar) precum si caracterele: {$(),|$}
* o subexpresie a expresiei descrie relatii intre un anumit grup de episoade
* expresia ge_1_, ge_2_, ..., ge_k_ are semnificatia ca grupurile de episoade ge_1_, ge_2_, .., ge_k_ trebuie vazute neaparat in ordinea data; fiecare grup de episoade poate fi un singur episod sau o subexpresie ce decrie mai multe episoade
* expresia ge1 # ge2 # ... # gek spune ca grupurile de episoade care pot fi vazute in orice ordine dar fara sa se intercalaze
* intr-o expresie pot aparea numerele de la 1 la N precum si caracterele: {$(),#$}
* fiecare numar de la 1 la N apare o singura data in expresie iar fiecarui episod ii corespunde in mod unic un numar
* un grup de episoade poate fi un singur episod sau o subexpresie ce decrie relatii intre mai multe episoade
* $ge{~1~} , ge{~2~}$ - grupul de episoade $ge{~1~}$ trebuie vazut inainte de $ge{~2~}$
* $ge{~1~} # ge{~2~}$ - cele doua grupurile de episoade pot fi vazute in orice ordine dar fara sa se intercalaze
* $,$ are prioritate mai mare fata de $#$
* parantele pot aparea oriunde in expresie cu conditia sa fie bine inchise
Pentru a va ajuta sa intelegeti regulile, Algorel va da si cateva exemple:
table(example). |_. expresie |_. ordini posibile |
| 1, (2 # 3), 4
| 1#2,3,4
| 1 2 3 4
1 3 2 4 |
| ((3, 2), 1) # (4, 5) # (7, 6, 8)
| 3 2 1 4 5 7 6 8
3 2 1 7 6 8 4 5
4 5 3 2 1 7 6 8
4 5 7 6 8 3 2 1
7 6 8 3 2 1 4 5
7 6 8 4 5 3 2 1
2 3 4 1 |
| ((3,(4#5),(1#(2,6))))
| 3 4 5 1 2 6
3 4 5 2 6 1
3 5 4 1 2 6
3 5 4 2 6 1
|
Acum Algorel are niste ordini posibile in care ar vrea sa vada episoadele pe care le-a gasit pe niste site-uri. El vrea sa stie care din aceste ordini se conformeaza regulilor expresiei si care nu.
Acum Algorel are niste ordini posibile in care ar vrea sa vada episoadele pe care le-a gasit pe niste site-uri cu recomandari. El vrea sa stie care din aceste ordini corespund cu regulile descrise de expresie.
h2. Date de intrare
Fişierul de intrare $episoade.in$ va contine pe prima linie expresia pe care Algorel o stie. Pe a doua linie se afla T - numarul de ordini pe care Algorel le-a gasit pe internet. Pe urmatoarele T linii se afla N numere (N este numarul maxim care apare in expresie) separate prin spatii care descriu fiecare cate o ordine.
Fişierul de intrare $episoade.in$ va contine pe prima linie expresia pe care Algorel o stie. Pe a doua linie se afla T - numarul de ordini pe care Algorel le-a gasit pe internet. Pe urmatoarele T linii se afla numerele 1 .. N (N este numarul maxim care apare in expresie) separate prin spatii ce descriu o anumita ordine a episoadelor.
h2. Date de ieşire
În fişierul de ieşire $episoade.out$ veti afisa T linii pentru fiecare din cele T ordini. Pe linia i veti scrie 1 daca ordinea i din fisierul de intrare este posibila conform expresiei sau 0 daca nu.
În fişierul de ieşire $episoade.out$ veti afisa T linii pentru fiecare din cele T ordini. Pe linia i veti scrie 1 daca ordinea i din fisierul de intrare este posibila conform expresiei sau 0 in caz contrar.
h2. Restricţii
* $1 ≤ N ≤ 500$
* Lungimea expresiei nu depaseste 2000 de caractere
* $1 ≤ T ≤ 30$
* Pentru 50% din teste $1 ≤ N ≤ 10$
* Pentru 50% din teste $1 ≤ N ≤ 9$
h2. Exemplu
table(example). |_. episoade.in |_. episoade.out |
| ((3, 2), 1) # (4, 5) # (7, 6, 8)
4
1 1 1 1 1 1 1 1
4 5 3 2 1 7 6 8
4 3 5 2 1 7 6 8
5 4 3 2 1 7 6 8
| ((3,(4#5),(1#(2,6))))
3
1 2 3 4 5 6
3 5 4 1 2 6
3 5 1 4 2 6
| 0
1
0
0
|
|
== include(page="template/taskfooter" task_id="episoade") ==