Polish version    English version  
  O olimpiadzie -> Zadania -> V OI 1997/1998


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

Zadanie: SUM
Autor: Grzegorz Jakacki
Suma ciągu jedynkowego

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

Ciąg liczbowy o wartościach będących liczbami całkowitymi nazywamy jedynkowym jeżeli dwa dowolne jego sąsiednie wyrazy różnią się od siebie dokładnie o jeden oraz jego pierwszy wyraz jest równy 0. Bardziej precyzyjnie: [a1,a2,...,an] będzie ciągiem o wartościach całkowitych; powiedzmy, że ten ciąg jest jedynkowy, jeżeli
  • Dla dowolnej liczby całkowitej k spełniającej nierówność 1 <= k < n zachodzi warunek |ak-an| =1 oraz
  • a1=0

Zadanie
Napisz program, który:

  • wczyta z pliku tekstowego SUM.IN dwie liczby całkowite długości ciągu i sumę elementów ciągu;
  • wyznaczy ciąg jedynkowy o zadanej długości i sumie elementów lub stwierdzi, że taki ciąg nie istnieje;
  • zapisze rezultat w pliku tekstowym SUM.OUT

Wejście
W pliku tekstowym SUM.IN są zapisane

  • w pierwszym wierszu - liczba n elementów ciągu, spełniająca nierówność 1<=n<=10 000
  • w drugim wierszu - liczba S będąca żądaną sumą elementów ciągu, spełniająca nierówność |S| <= 50 000 000

Wyjście
W pierwszych n wierszach pliku tekstowego SUM.OUT należy zapisać n liczb całkowitych (po jednej w wierszu) będących kolejnymi wyrazami ciągu jedynkowego (k-ty wyraz w k-tym wierszu) o zadanej sumie S lub słowo NIE, jeżeli taki ciąg nie istnieje.

Przykład
Dla pliku wejściowego SUM.IN o zawartości:

8
4
poprawnym rozwiązaniem jest plik wyjściowy SUM.OUT o zawartości:
0
1
2
1
0
-1
0
1
Twój program powinien szukać pliku SUM.IN w katalogu bieżącym i tworzyć plik SUM.OUT również w bieżącym katalogu. Plik zawierający napisany przez Ciebie program w postaci źródłowej powinien mieć nazwę SUM.???, 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 SUM.EXE





Wersja do druku