IV Olimpiada Informatyczna 1996/97

Zadanie: SKO
Autor: Bogdan S. Chlebus
Skok w bok

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

Plansza do gry "Skok w bok" jest nieskończoną taśmą pól, nieograniczoną zarówno w lewo jak i w prawo. Na polach planszy stoją pionki. Ich liczba jest skończona. Na jednym polu może stać równocześnie wiele pionków. Zakładamy, że pierwsze od lewej pole, na którym jest przynajmniej jeden pionek, ma numer 0. Pola na prawo od niego są oznaczone kolejno liczbami naturalnymi 1, 2, 3 itd., a pola w lewo liczbami ujemnymi: -1, -2, -3 itd. Ustawienie pionków na taśmie, które będziemy także nazywać konfiguracją, można opisać w ten sposób, że dla każdego pola, na którym jest co najmniej jeden pionek, podaje się numer pola i liczbę pionków na tym polu. Są dwa rodzaje ruchów, zmieniających konfiguracje: skok w prawo i skok w lewo. Skok w prawo polega na zabraniu po jednym pionku z wybranych dwóch sąsiednich pól o numerach p oraz p+1 i dodaniu jednego pionka na polu p+2. Skok w lewo: zabieramy jeden pionek z pola p+2, a dodajemy po jednym na polach p i p+1. Mówimy, że konfiguracja jest końcowa, jeśli na dowolnych dwóch sąsiednich polach znajduje się co najwyżej jeden pionek. Dla każdej konfiguracji istnieje dokładnie jedna konfiguracja końcowa, którą można z niej otrzymać w wyniku skończonej liczby skoków w prawo lub w lewo.

Zadanie

Ułóż program, który:

Wejście

W pierwszym wierszu pliku SKO.IN jest zapisana jedna liczba całkowita dodatnia n. Jest to liczba niepustych pól danej konfiguracji początkowej. 1Ł n Ł 10000 (dziesięć tysięcy). W każdym z kolejnych n wierszy znajduje się opis jednego niepustego pola konfiguracji początkowej w postaci pary liczb całkowitych oddzielonych odstępem. Pierwsza liczba to numer pola, a druga - to liczba pionków na tym polu. Te opisy są uporządkowane rosnąco według numerów pól. Największy numer pola nie przekracza 10000 (dziesięć tysięcy), a liczba pionków na żadnym polu nie przekracza 108 (sto milionów).

Wyjście

W pierwszym wierszu pliku tekstowego SKO.OUT należy zapisać konfigurację końcową, do której można przekształcić daną konfigurację początkową - numery kolejnych niepustych pól konfiguracji końcowej. Numery te powinny być uporządkowane rosnąco. Liczby w wierszu powinny być pooddzielane pojedyńczym odstępem.

Przykład

Dla pliku tekstowego SKO.IN:

2
0 5
3 3
poprawnym rozwiązaniem jest plik SKO.OUT
-4 -1 1 3 5

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