Polish version    English version  
  Historia OI -> II OI 1994/1995 -> Zadania


 Aktualności
 O olimpiadzie
 Komitety
 XVIII OI 2010/2011
 Historia OI
XVII OI 2009/2010
XVI OI 2008/2009
XV OI 2007/2008
XIV OI 2006/2007
XIII OI 2005/2006
XII OI 2004/2005
XI OI 2003/2004
X OI 2002/2003
IX OI 2001/2002
VIII OI 2000/2001
VII OI 1999/2000
VI OI 1998/1999
V OI 1997/1998
IV OI 1996/1997
III OI 1995/1996
II OI 1994/1995
Wyniki III etapu
Wyniki I etapu
Zadania
I OI 1993/1994
 Książeczki OI
 Reprezentacja
 Obozy Olimpiady
 Galeria zdjęć
 Ciekawe odsyłacze
 OIG LiveCD
 IV OIG 2009/2010
 Historia OIG
 SIO
 MAIN
II Olimpiada Informatyczna 1994/95

Zadanie: SLO
Autor: Wojciech Rytter
Składanie słów

Zawody III stopnia  
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.




Wersja do druku