Problem B
Problemy dżdżownicy
Languages
de
en
et
is
lt
lv
no
pl
ru
sv
Szukasz miejsca w ziemi aby umieścić tam swoją dżdżownicę,
Maximusa. Poszukiwania ograniczyłeś do obszaru w kształcie
pudełka (prostopadłościanu) o wymiarach
Maximus preferuje wilgotne miejsca, zatem musisz umieścić go
w polu, które jest co najmniej tak wilgotne jak wszystkie
sąsiadujące pola, w przeciwnym wypadku Maximus ucieknie i
będziesz musiał go szukać. Innymi słowy, musisz umieścić
Maximusa w lokalnym maksimum. Konkretniej, musisz znaleźć pole
gdzie wartość pola poza pudełkiem to
Jednakże, liczba pól może być bardzo duża, zatem nie chcesz mierzyć wilgotności każdego z nich. Z tego powodu, w tym zadaniu będziesz komunikował się z programem sprawdzającym, pytając o wilgotność pewnych punktów. Kiedy już znajdziesz odpowiednie miejsce dla Maximusa, podaj tę lokalizację programowi sprawdzającemu.
Interakcja
W pierwszym wierszu standardowego wejścia znajdują się
cztery dodatnie liczby całkowite:
Następnie możesz wypisać co najwyżej
Po zadaniu wszystkich zapytań Twój program musi wypisać
dokładnie jeden wiersz postaci ! x y
z i się zakończyć. Taki wiersz oznacza, że pole
Wszystkie wartości
Pamiętaj, żeby opróżniać bufor wyjściowy po każdym wierszu, przed wczytaniem odpowiedzi sprawdzarki, inaczej twój program otrzyma wynik Time Limit Exceeded. Komendy opróżniające bufor we wspieranych językach:
-
Java: System.out.println() robi to automatycznie.
-
Python: print() również robi to sam.
-
C++: cout << endl; opróżnia bufor, dodatkowo wypisując znak nowej linii. Jeżeli używasz printf: fflush(stdout).
-
Pascal: Flush(Output).
Aby pomóc z radzeniem sobie z komunikacją, zapewniamy opcjonalny dodatkowy kod, który możesz skopiować do swojego programu. Odnośnik do tego kodu dla wszystkich wspieranych języków (C++, Pascal, Java, Python) możesz znaleźć w menu bocznym na stronie z problemami. Pomocniczy kod używa zoptymalizowanych metod wczytywania i wypisywania, co może być przydatne dla Javy i Pythona w dwóch ostatnich przypadkach testowych.
Program sprawdzający nie będzie adaptacyjny, tj. dla każdego testu będą ustalone wartości wilgotności, które nie będą zależeć od pomiarów wykonanych przez Twój program.
Ograniczenia
Zestaw testów dzieli się na kilka grup, każda jest warta pewną liczbę punktów. Każda grupa składa się z jednego bądź większej liczby testów. Aby otrzymać punkty za daną grupę, Twoje rozwiązanie musi przejść wszystkie testy z tej grupy. Ostateczny wynik za zadanie jest liczony jako maksymalny wynik z pojedynczych zgłoszeń.
Grupa |
Punkty |
Limity |
1 |
10 |
|
2 |
22 |
|
3 |
12 |
|
4 |
19 |
|
5 |
14 |
|
6 |
23 |
|
Sample dialogue
Na Kattisie znajduje się jeden test przykładowy. W tym
teście pudełko ma wymiary
JUDGE: 3 1 1 3 YOU: ? 3 1 1 JUDGE: 13 YOU: ? 2 1 1 JUDGE: 14 YOU: ? 1 1 1 JUDGE: 10 YOU: ! 2 1 1