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: PAL
Autor: Wojciech Rytter
Palindromy

Zawody I stopnia  
Plik źródłowy: PAL.??? (np. pas, c, cpp)
Plik wykonywalny: PAL.exe
Plik wejściowy: PAL.in
Plik wyjściowy: PAL.out

 

Słowo jest palindromem wtedy i tylko wtedy, gdy nie zmienia się, jeśli czytamy je wspak. Palindrom jest parzysty, gdy ma dodatnią parzystą liczbę liter.

Przykładem parzystego palindromu jest słowo abaaba.

Rozkładem słowa na palindromy parzyste jest jego podział na rozłączne części, z których każda jest palindromem parzystym.

Przykład
Rozkładami słowa:
bbaabbaabbbaaaaaaaaaaaabbbaa
na palindromy parzyste są:
bbaabb   aabbbaaaaaaaaaaaabbbaa
oraz:
bb    aa    bb    aa    bb    baaaaaaaaaaaab    bb    aa

Pierwszy rozkład zawiera najmniejszą możliwą liczbę palindromów, drugi jest rozkładem na maksymalną możliwą liczbę palindromów parzystych. Zauważ, że słowo może mieć wiele różnych rozkładów na palindromy parzyste, albo nie mieć żadnego.

Zadanie

Napisz program, który wczytuje słowo z pliku tekstowego PAL.IN i bada, czy da się je rozłożyć na palindromy parzyste. Jeśli nie, to zapisuje w pliku tekstowym PAL.OUT tylko jeden wyraz NIE, a jeśli da się rozłożyć, to zapisuje jego rozkłady na minimalną i maksymalną liczbę palindromów parzystych.

Wejście

Plik wejściowy PAL.IN zawiera jedno słowo złożone z co najmniej 1 i co najwyżej 200 małych liter alfabetu angielskiego, zapisane w jednym wierszu bez odstępów pomiędzy literami. Zakładamy, że dane słowo jest zapisane w pliku PAL.IN poprawnie i Twój program nie musi tego sprawdzać.

Wyjście

Plik wyjściowy PAL.OUT powinien zawierać:
  • tylko jeden wyraz NIE
  • albo:
    • w pierwszym wierszu ciąg słów oddzielonych odstępami stanowiący jeden rozkład danego słowa na minimalną liczbę palindromów parzystych,
    • w drugim wierszu jeden rozkład danego słowa na maksymalną liczbę palindromów parzystych.

Przykłady

Dla pliku PAL.IN:
bbaabbaabbbaaaaaaaaaaaabbbaa

twój program powinien utworzyć następujący plik PAL.OUT:

bbaabb aabbbaaaaaaaaaaaabbbaa
bb aa bb aa bb baaaaaaaaaaaab bb aa

Dla pliku PAL.IN:

abcde

twój program powinien utworzyć plik PAL.OUT:

NIE

Dla pliku PAL.IN:

abaaba

twój program powinien utworzyć plik PAL.OUT:

abaaba
abaaba

Twój program powinien szukać pliku PAL.IN w katalogu bieżącym i tworzyć plik PAL.OUT również w bieżącym katalogu. Plik zawierający napisany przez Ciebie program w postaci źródłowej powinien mieć nazwę PAL.???, 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 PAL.EXE.




Wersja do druku