|
II Olimpiada Informatyczna 1994/95
|
Zadanie: SLO
|
Autor: Wojciech Rytter
|
Składanie słów
Plik źródłowy: | SLO.??? (np. pas, c, cpp) |
Plik wykonywalny: | SLO.exe |
Plik wejściowy: | SLO.in |
Plik wyjściowy: | SLO.out |
Dane jest słowo w stanowiące wzorzec oraz skończony ciąg niepustych
słów C = (w1,,...,wk). W ciągu C trzeba wskazać słowa, które po złączeniu,
w takiej kolejności, w jakiej występują w ciągu C, utworzą wzorzec. Rozwiązaniem
ma być rosnący ciąg numerów wyrazów danego ciągu C, które po złączeniu
utworzą wzorzec. Wzorzec w i każde słowo w ciągu C składają się z co najwyżej
150 małych liter alfabetu angielskiego od 'a' do 'z' i nie zawierają znaków
narodowych. Liczba wyrazów w ciągu jest dodatnia i nie większa niż 200.
Przykład
Wzorzec rytter można utworzyć ze słów ciągu C = (ry, r, yt, y, tt, t, e, te, r,
er) wybierając kolejno i łącząc wyrazy o numerach (2, 4, 5, 7, 9). Wybranie
wyrazów:
(1, 5, 10) jest innym sposobem otrzymania tego samego wzorca.
Zadanie
Napisz program, który:
- wczytuje z pliku tekstowego SLO.IN następujące dane: wzorzec w, liczbę
wyrazów ciągu C, a następnie kolejne wyrazy tego ciągu,
- jeżeli nie istnieje rozwiązanie zadania utworzenia wzorca w z wyrazów ciągu C,
zgodnie z podanymi wyżej warunkami, to zapisuje w pliku SLO.OUT jedno
słowo NIE,
- jeżeli istnieją rozwiązania i jest ich mniej niż 1000000, zapisuje w pliku
tekstowym SLO.OUT liczbę rozwiązań, a następnie jedno dowolne rozwiązanie
zadania,
- jeżeli rozwiązań jest więcej niż 999999 zapisuje w pliku SLO.OUT liczbę
1000000, a następnie jedno dowolne rozwiązanie zadania.
Wejście
- W pierwszym wierszu pliku SLO.IN zapisane jest jedno słowo złożone z co
najwyżej 150 małych liter alfabetu angielskiego. Jest to wzorzec w.
- W drugim wierszu jest zapisana dodatnia liczba całkowita k <= 200. Jest to liczba
wyrazów ciągu C.
- W kolejnych k wierszach są zapisane kolejne niepuste słowa tworzące ciąg C,
każdy wyraz jest zapisany w osobnym wierszu i składa się z co najwyżej 150
małych liter alfabetu angielskiego. Pierwsza litera słowa jest zawsze pierwszym
znakiem w wierszu, a bezpośrednio po ostatniej jest koniec wiersza.
Wyjście
W pliku SLO.OUT należy zapisać:
- albo jedno słowo NIE, w przypadku gdy ze słów w ciągu C nie można ułożyć
wzorca w sposób zgodny z warunkami zadania,
- albo w pierwszym wierszu jedną liczbę, to jest liczbę rozwiązań zadania, albo
1000000, a w kolejnych wierszach rosnący ciąg numerów wyrazów wybranych
z ciągu C, które po złożeniu utworzą wzorzec - każdą liczbę w osobnym
wierszu.
Przykład
Dla pliku SLO.IN:
rytter
10
ry
r
yt
y
tt
t
e
te
r
er
w pliku SLO.OUT można zapisać:
9
2
4
5
7
9
Twój program powinien szukać pliku SLO.IN w katalogu bieżącym i tworzyć
plik SLO.OUT również w bieżącym katalogu. Plik zawierający napisany przez
Ciebie program w postaci źródłowej powinien mieć nazwę SLO.???, gdzie zamiast
??? należy wpisać co najwyżej trzyliterowy skrót nazwy użytego języka
programowania. Ten sam program w postaci wykonywalnej powinien być zapisany
w pliku SLO.EXE.
|