Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

WIPING26 - Nawigator

Zadanie eliminacyjne w konkursie WIPING2 organizowanym przez
Wydział Informatyki Zachodniopomorskiego Uniwersytetu Technologicznego w Szczecinie

Nawigator

Twoim zadaniem będzie oprogramowanie Automatycznego Nawigatora, który będzie wspomagał marynarzy w ich wędrówkach po Morzu Ping.

Żegluga po Morzu Ping nie przypomina w niczym nawigacji na innych akwenach. Po pierwsze, wszystkie mapy tego morza są rysowane w kartezjańskim układzie współrzędnych, a współrzędne określające położenie na tym morzu są zwykłymi współrzędnymi kartezjańskimi. Po drugie, kurs określa się tutaj jako kąt między trasą statku o osią OY liczony w kierunku ruchu wskazówek zegara.

Firma Ping&Co wypuszcza właśnie na rynek automat nawigacyjny, który przy użyciu dość zaawansowanej magii jest w stanie w regularnych odstępach czasu podawać aktualną pozycję statku. To oczywiście zbyt mało, aby ten przyrząd mógł się stać przebojem rynkowym, trzeba więc rozszerzyć jego funkcje i to właśnie zadanie spada na twoje barki.

Przygotuj się więc do napisania programu, który na starcie otrzymuje współrzędne punktu docelowego (zakładamy, że każda podróż zaczyna się w porcie o współrzędnych (0,0)).

Od tego momentu zaczyna działać automat nawigacyjny, który starając się utrzymać statek na wyznaczonym kursie w regularnych odstępach czasu przekazuje twojemu programowi dane o położeniu. Twój program z kolei powinien w odpowiedzi przekazać automatowi jedną z trzech informacji:

  • OK jeśli płynie poprawnym kursem i korekta nie jest potrzebna
  • STOP jeśli statek osiągnął port docelowy (jest to zarazem koniec działania twojego kodu)
  • daną określającą nowy kurs, jeśli okazało się, że statek płynie złym kursem

Wejście

  • wiersz tekstu, zawierający dwie dane zmiennopozycyjne, określające współrzędne portu docelowego
  • następnie nieznana z góry liczba wierszy tekstu, z których każdy zawiera dwie dane zmiennopozycyjne określające bieżące położenie statku

Wyjście

  • nieznana z góry liczby wierszy tekstu, z których każdy zawiera jedną z trzech informacji
    • napis OK, jeśli bieżące położenie statku leży na wyznaczonym ostatnio kursie
    • napis STOP, jeśli bieżące położenie statku odpowiada położeniu docelowemu
    • liczbę zmiennopozycyjną z przedziału <0..360), wyprowadzoną z trzema miejscami po kropce dziesiętnej, określającą nowy kurs statku, jeśli z położenia statku wynika, że kurs poprzedni nie został dotrzymany

Przykład

Wejście:

3.0 3.0
1.0 1.0
3.0 0.0
0.0 3.0

7.0 3.0
5.0 3.0
3.0 3.0

Wyjście:

OK
0.000
90.000
270.000
OK
STOP

Informacje dodatkowe

  • program zostanie uruchomiony 10 razy dla różnych zestawów danych

  • każde poprawne rozwiązanie daje 10% punktacji zadania

  • zadanie ma wartość punktową 6,0

 

Dodane przez:Sławomir Wernikowski
Data dodania:2013-11-30
Limit czasu wykonania programu:1s
Limit długości kodu źródłowego3000B
Limit pamięci:1536MB
Cluster: Cube (Intel G860)
Języki programowania:C CSHARP C++ 4.3.2 CPP C99 JAVA PAS-GPC PAS-FPC PERL PERL6 PHP PYTHON PYTHON3 PY_NBC RUBY
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.