In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Bajtoks, galaktyczny awanturnik, znowu wpadł w tarapaty! Ucieka właśnie swoim statkiem kosmicznym przed oddziałem Bitoków.
Na szczęście nie jest sam - bohaterowi towarzyszą na pokładzie: Bajtinoks, operator działa laserowego, i Ty, programista komputera pokładowego. Bitokowie, jako dosyć prymitywna rasa, nie dysponują żadną bronią dalekiego zasięgu, więc będą starali się po prostu dogonić statek Bajtoksa. Bajtinoks jest strzelcem wyborowym i nigdy nie pudłuje, jednak nie wie, w jakiej kolejności ma strzelać do nieprzyjaciół. I to jest właśnie zadanie dla Ciebie!
Napisz program, który obliczy kolejność, w jakiej Bajtinoks powinien strzelać do przeciwników, aby zmaksymalizować szanse ucieczki.
Pierwszy wiersz standardowego wejścia zawiera jedną liczbę całkowitą () oznaczającą liczbę wrogich statków. W drugim wierszu znajdują się dwie liczby całkowite , oddzielone pojedynczym odstępem (, , oznaczające odpowiednio położenie początkowe i prędkość statku Bajtoksa.
Kolejne wierszy zawiera opisy wrogich statków. Każdy taki opis składa się z dwóch liczb całkowitych , oddzielonych pojedynczym odstępem (, , oznaczających odpowiednio położenie początkowe -tego bitockiego statku oraz jego prędkość. Wszystkie położenia (liczby ) wyrażone są w bajtometrach, a prędkości (liczby ) - w bajtometrach na bajtosekundę. Wszystkie statki poruszają się wzdłuż jednej linii prostej.
Pomiędzy dowolnymi dwoma strzałami Bajtinoksa musi upłynąć co najmniej jedna bajtosekunda, aby zdążył on przeładować działo. W tym czasie każdy statek przemieszcza się o bajtometrów. Jeżeli którykolwiek z wrogich statków znajdzie się podczas tego ruchu na tej samej pozycji co Bajtoks, to bohater przegrywa (chyba że będzie to tylko jeden wrogi statek i zbliży się on dokładnie w momencie, w którym Bajtinoks zakończy przeładowywanie działa - wtedy przeciwnik będzie jeszcze mógł zostać zestrzelony).
Na samym początku pościgu Bajtinoks jest już przygotowany do strzału, więc nie musi przed nim przeładowywać działa.
Zakładamy, że statek Bajtoksa jest na początku najdalej spośród wszystkich statków (czyli dla każdego zachodzi: ), ponadto statki mogą się bez problemu wymijać. Bajtinoks może trafić w dowolny z wrogich statków. Czas przelotu promienia laserowego można pominąć. Jedno trafienie wystarczy, by zniszczyć dowolny statek.
W testach wartych łącznie 50 punktów zachodzi dodatkowo nierówność .
Jeżeli załoga Bajtoksa może zestrzelić wszystkich ścigających, to w pierwszym i jedynym wierszu standardowego wyjścia powinny znaleźć się wszystkie liczby całkowite z przedziału (każda dokładnie raz) pooddzielane pojedynczymi odstępami i oznaczające numery wrogich statków w kolejności, w jakiej Bajtinoks powinien do nich strzelać. Jeśli istnieje wiele możliwych sekwencji strzałów, przy których Bajtoks ucieknie wrogom, Twój program powinien wypisać dowolną z nich.
Jeśli natomiast załoga Bajtoksa skazana jest na porażkę, to w pierwszym i jedynym wierszu wyjścia należy wypisać słowa GAME OVER (oddzielone pojedynczym odstępem).
Dla danych wejściowych:
3 5 1 0 2 3 3 -2 3
poprawną odpowiedzią jest:
2 1 3
Wyjaśnienie do przykładu: Strzelamy do trzeciego wroga. Po bajtosekundzie jesteśmy na pozycji 6, wróg pierwszy na pozycji 2, a wróg drugi na pozycji 6. Strzelamy do wroga drugiego, w ostatniej chwili ratując się przed nim. Po drugiej sekundzie jesteśmy na pozycji 7, a wróg pierwszy na pozycji 4, możemy więc spokojnie go zestrzelić i uciec.
Inne poprawne odpowiedzi dla tego testu to: 1 2 3, 2 1 3, 2 3 1.
Autor zadania: Michał Włodarczyk.