Problem B
Sliekas raizes
Languages
de
en
et
is
lt
lv
no
pl
ru
sv
Jūs meklējat vietu augsnē, kur novietot savu mājdzīvnieku,
slieku Maximus. Jūs ierobežojāt meklēšanas platību uz
paralēlskaldni, kura izmērs ir
Maximus mīl mitras vietas, tādēļ jums viņš jānovieto šūnā,
kurā mitruma daudzums ir vismaz tikpat liels kā tās kaimiņu
šūnās, citādi viņš dodas prom, un jums būs problēmas viņu
atrast. Citiem vārdiem sakot, jums jānovieto Maximus lokālajā
maksimumā. Precīzāk, jums jāatrod tāda šūna
kur šūnas mitruma daudzums ir
Tomēr šūnu ir ļoti daudz, tāpēc jūs nevēlaties mērīt mitruma daudzumu visās šūnās. Tādēļ šajā uzdevumā jums ir atļauts komunicēt ar vērtēšanas programmu un uzdot tai jautājumus par mitruma daudzumu noteiktā šūnā. Kad jūs atrodat piemērotu šūnu sliekai Maximus, iesniedziet šūnas pozīciju vērtēšanas programmai.
Komunikācija
Pirmā ievaddatu rinda satur četrus pozitīvus veselus
skaitļus:
Pēc tam varat izvadīt ne vairāk kā
Pēc visām šīm rindām jūsu programmai jāizvada tieši viena
rinda formā “! x y z“ un jābeidz
darbība. Tas apgalvos, ka šūna
Visām
Jums jānodrošina, ka programma sinhronizē (flush) izvada datu plūsmu pirms tā nolasa vērtēšanas programmas atbildi, citādi saņemsiet vērtējumu Time Limit Exceeded. Atbalstītajās valodās to var izdarīt sekojošā veidā:
-
Java: System.out.println() sinhronizē automātiski.
-
Python: print() sinhronizē automātiski.
-
C++: cout << endl; sinhronizē, papildus izvada jaunas rindas simbolu. Ja lietojat printf, fflush(stdout).
-
Pascal: Flush(Output).
Lai palīdzētu komunicēt ar vērtēšanas programmu, mēs nodrošinam programmas kodu, kuru jūs pēc savas izvēles varat iekopēt savā programmā. Saiti uz programmu kodiem visām atbalstītajām valodām (C++, Pascal, Java, Python) varat atrast testēšanas sistēmas uzdevumu lapas sānjoslā. Nodrošinātais programmas kods arī lieto ātras ievada/izvada operācijas, kas var būt noderīgas Python un Java risinājumos (it īpaši pēdējās divās testu grupās).
Vērtēšanas programma neadaptēsies, t.i., katrā testā būs fiksētas mitruma daudzuma vērtības, kuras nav atkarīgas no programmas veiktajiem mērījumiem.
Ierobežojumi
Jūsu risinājums tiks testēts uz vairākām testu grupām, par katru no tām var iegūt punktus. Katra testu grupa satur vienu vai vairākus testus. Lai iegūtu punktus par testu grupu, jums ir pareizi jāatrisina visi testi šajā grupā. Jūsu beigu vērtējums par uzdevumu būs starp visiem iesūtījumiem lielākais.
Grupa |
Punkti |
Ierobežojumi |
1 |
10 |
|
2 |
22 |
|
3 |
12 |
|
4 |
19 |
|
5 |
14 |
|
6 |
23 |
|
Parauga dialoga protokols
Kattis testēšanas sistēmā ir viens parauga tests. Šajā
parauga testā paralēlskaldņa izmēri ir
Tā kā
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