Polish version    English version  
  Historia OI -> IX OI 2001/2002 -> 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
Terminarz
Zadania
Wyniki III etapu
Wyniki II etapu
Wyniki I etapu
II Etap
Przepisy
Dla zawodnikow
Przydatne zasoby
Statystyki
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
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
IX Olimpiada Informatyczna 2001/2002

Zadanie: wyl
Autor: Jakub Pawlewicz
Wyliczanka

Zawody II stopnia, dzień pierwszy  
Plik źródłowy: wyl.??? (np. pas, c, cpp)
Plik wejściowy: wyl.in
Plik wyjściowy: wyl.out

Dzieci ustawiły się w kółko i bawią się w wyliczankę. Dzieci są ponumerowane od 1 do n w ten sposób, że (dla i = 1, 2, ..., n - 1) na lewo od dziecka nr i stoi dziecko nr i+1, a na lewo od dziecka nr n stoi dziecko nr 1. Dziecko, "na które wypadnie" w wyliczance, wypada z kółka. Wyliczanka jest powtarzana, aż nikt nie zostanie w kółku. Zasady wyliczanki są następujące:

  • Pierwszą wyliczankę zaczyna dziecko nr 1. Każdą kolejną wyliczankę zaczyna dziecko stojące na lewo od dziecka, które ostatnio wypadło z kółka.
  • Wyliczanka za każdym razem składa się z k sylab. Dziecko, które zaczyna wyliczankę, mówi pierwszą jej sylabę; dziecko stojące na lewo od niego mówi drugą sylabę, kolejne dziecko trzecią itd. Dziecko, które mówi ostatnią sylabę wyliczanki, wypada z kółka.

Obserwujemy dzieci bawiące się w wyliczankę i widzimy, w jakiej kolejności wypadają one z kółka. Na podstawie tej informacji próbujemy odgadnąć, z ilu sylab składa się wyliczanka.

Zadanie

Napisz program, który:

  • wczyta z pliku tekstowego wyl.in opis kolejności, w jakiej dzieci wypadały z kółka,
  • wyznaczy najmniejszą dodatnią liczbę k, dla której dzieci bawiąc się w k-sylabową wyliczankę będą wypadać z kółka w zadanej kolejności, lub stwierdzi, że takie k nie istnieje,
  • zapisze w pliku tekstowym wyl.out wyznaczoną liczbę k lub słowo NIE w przypadku, gdy takie k nie istnieje.

Wejście

W pierwszym wierszu pliku tekstowego wyl.in znajduje się jedna dodatnia liczba całkowita n, 2 <= n <= 20. W drugim wierszu znajduje się n liczb całkowitych pooddzielanych pojedynczymi odstępami - i-ta liczba określa, jako które z kolei dziecko nr i wypadło z kółka.

Wyjście

Twój program powinien zapisać w pierwszym i jedynym wierszu pliku tekstowego wyl.out jedną liczbę całkowitą: najmniejszą liczbę (k) sylab, jakie może mieć wyliczanka, lub jedno słowo NIE, jeśli taka liczba nie istnieje.

Przykład

Dla pliku wejściowego wyl.in:

4
1 4 2 3
poprawną odpowiedzią jest plik wyjściowy wyl.out:
5



Wersja do druku