Problem B
Wurmprobleme
Languages
de
en
et
is
lt
lv
no
pl
ru
sv
Du möchtest einen Platz in der Erde für deinen Wurm Maximus
finden. Die Suche begrenzt du auf ein quaderförmiges Gebiet der
Größe
Maximus liebt feuchte Gebiete. Daher musst du ihn in eine
Zelle setzen, die mindestens so feucht ist wie ihre
Nachbarzellen. Ansonsten würde er weggehen und du würdest
Schwierigkeiten haben, ihn wiederzufinden. Anders ausgedrückt
musst du ihn in einem lokalem Feuchtigkeitsmaximum platzieren.
Genauer gesagt, finde eine Zelle
wobei Zellen außerhalb des Quaders den Wert
Allerdings kann die Anzahl an Zellen sehr groß werden, also möchtest du nicht die Feuchtigkeit aller Zellen messen. Deshalb interagierst du mit dem Grader, und fragst nach der Feuchtigkeit an bestimmten Punkten. Wenn du eine geeignete Position für Maximus gefunden hast, gib diese aus.
Interaktivität
Die erste Zeile des Inputs enthält vier positive ganze
Zahlen:
Danach kannst du bis zu
Danach muss dein Programm genau eine Zeile der Form
“! x y z” ausgeben. Dadurch
behauptest du, dass der Punkt
Alle Werte von
Du musst die Standardausgabe flushen, bevor du die Antwort des Graders einliest. Ansonsten bekommt dein Programm die Bewertung Time Limit Exceeded. Du kannst die folgenden Befehle nutzen:
-
Java: System.out.println() flusht automatisch.
-
Python: print() flusht automatisch.
-
C++: cout << endl; flusht und schreibt zusätzlich einen Zeilenumbruch. Falls du printf nutzt: fflush(stdout).
-
Pascal: Flush(Output).
Um bei dieser Interaktion zu helfen, stellen wir Hilfscode zur Verfügung, den du in dein Programm kopieren darfst. Einen Link zu diesem Code für alle unterstützten Sprachen (C++, Pascal, Java, Python) kann in der Seitenleiste der Kattis-Aufgabenseite gefunden werden. Der Hilfscode nutzt auch schnelle Eingabe/Ausgabe-Methoden, die für Python und Java hilfreich sein können (nur für die letzten beiden Testgruppen relevant).
Der Grader ist nicht adaptiv; jeder Testfall hat eine festgelegte Verteilung von Feuchtigkeitswerten, die nicht von den Anfragen des Programms abhängt.
Beschränkungen
Deine Lösung wird auf mehreren Testgruppen ausgeführt werden, von denen jede eine bestimmte Punktzahl wert ist. Jede Testgruppe enthält mehrere Testcases. Um Punkte für eine Testgruppe zu bekommen, müssen alle Testfälle in der entsprechenden Gruppe gelöst werden. Deine finale Punktzahl wird die maximal erreichte Punktzahl in einer einzelnen Einsendungen sein.
Gruppe |
Punkte |
Limits |
1 |
10 |
|
2 |
22 |
|
3 |
12 |
|
4 |
19 |
|
5 |
14 |
|
6 |
23 |
|
Beispielinteraktion
In Beispiel 1 hat der Quader die Größe
Da
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