III Olimpiada Informatyczna 1995/96
|
Zadanie: WYR
|
Autor: Wojciech Rytter
|
Zawody III stopnia |
Plik źródłowy: | WYR.??? (np. pas, c, cpp) |
Plik wykonywalny: | WYR.exe |
Plik wejściowy: | WYR.in |
Plik wyjściowy: | WYR.out |
Dane są dwa słowa x i y oraz skończony ciąg słów (w1, w2, ... , wk).
Operacja w * wi polega na połączeniu (konkatenacji) słowa w ze słowem wi (1 <= i <= k), czyli - mówiąc inaczej - na dopisaniu do słowa w, z prawej jego strony, słowa wi.
Chcemy sprawdzić, czy słowa x i y można wyrównać za pomocą słów z danego ciągu. To znaczy, czy można po wykonaniu skończonej liczby operacji dopisywania do słów x i y odpowiednio wybranych wyrazów danego ciągu, otrzymać w obu przypadkach to samo słowo.
Przykład
Słowa abba oraz ab można wyrównać za pomocą wyrazów ciągu: baaabad aa badccaa
cc. Wystarczy w tym celu do słowa abba dopisać: aa oraz badccaa, zaś do słowa ab -
najpierw baaabad, potem cc, a następnie aa. W obu przypadkach otrzymamy to samo słowo:
abbaaabadccaa.
w pliku WYR.OUT należy zapisać jedna liczbę:
5
Dla pliku WYR.IN:
4
1 a
2 ab
2 bb
2 ab
2 ba
2 aa
w pliku WYR.OUT należy zapisać słowo:
NIE
Twój program powinien szukać pliku WYR.IN w katalogu bieżącym i tworzyć plik WYR.OUT również w bieżącym katalogu. Plik zawierający napisany przez Ciebie program w postaci źródłowej powinien mieć nazwę WYR.???, gdzie zamiast ??? należy wpisać co najwyżej trzyliterowy skrót nazwy użytego języka programowania. Ten sam program w postaci wykonalnej powinien być zapisany w pliku WYR.EXE.