ITPW
GRA

W grze bierze udział jednocześnie czterech graczy. Gra odbywa się na planszy
o rozmiarach 50x50 pól. Każdy gracz ma dwa rodzaje jednostek: żołnierzy i
robotników. Gracze znają całą planszę.

Postacie te mogą przechodzić na jedno z ośmiu sąsiednich pól (lub mniej niż
ośmiu, gdy rozważamy pola przy brzegu). W przypadku spotkania dwóch wrogich
żołnierzy (gdy jeden wchodzi na pole zajmowane przez drugiego) obaj giną.
Natomiast żołnierz spotykający się z wrogim robotnikiem zabija robotnika.
Robotnik nie może wejść na pole zajęte przez innego robotnika, żadna postać
nie może też wejść na pole zajmowane przez postać tego samego gracza (jest
to traktowane jako niepoprawny ruch).

Robotnicy (ale nie żołnierze) zajmują też teren. Początkowo prawie cały
teren nie należy do nikogo. Gdy robotnik gracza wchodzi na jakieś pole, to
gracz ten staje się właścicielem tego pola. Pole przestaje należeć do
gracza, tylko gdy robotnik innego gracza na nie wejdzie, wtedy ten drugi je
przejmuje. Jeśli robotkik ginąc wchodzi na żołnierza, to nie zajmuje pola.

Gra odbywa się turowo. W każdej turze kolejni gracze wykonują ruchy
wszystkimi swoimi postaciami (lub częścią, jeśli tak wolą). Gracz
przemieszcza swoje postacie w wybranej przez siebie kolejności.

Każdy gracz jest przypisany do jednego rogu planszy i w okolicy tego rogu
początkowo ma trzech robotników (zajmują sam róg i dwa najbliższe pola) oraz
trzech żołnierzy (trzy następne najbliższe pola). Początkowo tylko pola, na
których stoją robotnicy, należą do gracza.

Ponadto raz na jakiś czas (w przybliżeniu co trzy tury) na planszy pojawia
się nowa postać. Losuje się, do którego gracza będzie ona należała, przy
czym prawdopodobieństwo każdego jest proporcjonalne do ilości posiadanego
przez niego terenu. Gracz sam wybiera, czy to ma być żołnierz, czy robotnik.
Pojawia się on w rogu przypisanym do danego gracza i jest traktowane jako
próba wejścia na to pole. Nieudana próba powoduje, że postać się nie pojawia
(nie jest to uznawane za niepoprawny ruch). Nasza postać pojawi się więc,
gdy róg jest pusty lub gdy jest zajmowany przez wrogiego robotnika, a my
wyprodukowaliśmy żołnierza. Natomiast jeśli w rogu stoi wrogi żołnierz, a my
wyprodukowaliśmy żołnierza, to obaj giną.

Gra trwa 500 tur. Po tym czasie każdy gracz dostaje punkt za każde swoje
pole oraz za każdą postać zbitą w trakcie rozgrywki (również za zbitą
poprzez jej samobójstwo). W przypadku posiadania takiej samej liczby punktów
o kolejności decyduje losowanie.

Wykonanie nieprawidłowego ruchu, przekroczenie czasu lub zakończenie się
programu powoduje, że później gracz ten nie może już wykonywać żadnych
ruchów. Jednak jego postacie pozostają na planszy, a jego pola na koniec też
się liczą (więc jeśli ma najwięcej punktów, to może nawet wygrać).


PROTOKÓŁ

Komunikacja przez standardowe wejście / wyjście.

Na początek program dostaje numerek, którym jest graczem (jedna liczba w
pierwszym wierszu): 
1 - lewy górny
2 - prawy górny
3 - lewy dolny
4 - prawy dolny

Następnie na wejściu cyklicznie pojawia się opis wykonanego ruchu lub
żądanie wykonania ruchu - jest to jeden wiersz. Początek takiego opisu
zawiera dwie liczby. Pierwsza z nich to numer gracza, którego dotyczy ruch.
Druga liczba jest zerem lub jedynką. Jeśli jest zerem, chodzi o zwykły ruch.
Natomiast jeśli jedynką, oznacza to otrzymanie nowej postaci. Jeśli
odczytany numer gracza jest twoim numerem, to z wejścia należy wczytać
jeszcze jedną liczbę: czas, który pozostał ci jeszcze na grę (w sekundach),
następnie powinieneś wypisać swój ruch. Jeśli nie, to należy odczytać ruch
danego gracza.

W przypadku pojawienia się nowej postaci należy zapisać / odczytać jedną
liczbę 0 lub 1 (robotnik czy żołnierz).

W przypadku ruchu pierwsza liczba oznacza liczbę postaci, które się
przemieszczają. Następnie występuje właśnie tyle czwórek liczb całkowitych
x1 y1 x2 y2, gdzie (x1, y1) są współrzędnymi postaci przed ruchem, a 
(x2, y2) po ruchu. Pola te powinny sąsiadować przynajmniej rogami, każda
postać w ciągu tury może ruszyć się najwyżej raz. Obie współrzędne zmieniają
się w zakresie od 0 do 49, przy czym lewy górny róg ma współrzędne (0, 0).
Nie może to być dwa razy to samo pole - jeśli nie chcemy się ruszać daną
postacią należy jej w ogóle nie wypisywać.

Można założyć, że gracze wykonują ruchy kolejno, a nowe postacie są losowane
pomiędzy całymi turami.

Ruch należy wypisać w jednej linii, po czym należy przejść do nowej linii
oraz odświeżyć standardowe wyjście (w C służy do tego funkcja
fflush(stdout)).

Proszę też zobaczyć przykładowy program.

ROZGRYWKI

Rozgrywki odbędą się w taki sposób, aby każdy grał z każdym przynajmniej raz
oraz aby każdy uczestniczył w takiej samej liczbie gier. W wyniku każdej
partii gracze pierwszy, drugi, trzeci, czwarty otrzymują odpowiednio: 3, 2,
1, 0 punktów. Zsumowane liczby punktów z każdej partii tworzą końcowy
ranking. Czas na zawodnika na grę będzie wynosił około pół minuty.

ITPW, KNI TEAM