Duša

4
Latvijas Informātikas olimpiādes logo

Uzdevums no 2026. g. LIO atlases kārtas; abām grupām.

Stāsts

Karlsons ir iegādājies ļoti precīzu dušas temperatūras regulētāju, un tagad vēlas to izmēģināt. Regulētājam ir NN iedaļas, apzīmētas ar skaitļiem no 11 līdz NN. Iedaļa 11 atbilst temperatūrai 38∘C38^\circ C, iedaļa N−39∘CN - 39^\circ C, un starp iedaļām temperatūra pieaug vienmērīgi.

Karlsonam patiks tikai viena temperatūra, kas atbildīs regulētāja iedaļai XX (1≤X≤N1 \leq X \leq N), kuru Karlsons pats vēl nezina. Ja dušā nonāk ūdens, kas atbilst:

  • iedaļai, kas mazāka par XX, ūdens šķiet ledains;
  • iedaļai, kas lielāka par XX, ūdens šķiet verdošs;
  • iedaļai, kas vienāda ar XX, ūdens ir patīkams.

Karlsons vēlas pēc iespējas ātrāk noskaidrot precīzo XX vērtību.

Duša darbojas ar aizturi: siltajam ūdenim nepieciešamas nedaudz vairāk kā tt sekundes, lai aizplūstu no temperatūras regulētāja līdz dušas uzgalim. Tātad, ja laika brīdī TT regulētājā uzstāda temperatūru SS, dušā ūdens ar temperatūru SS sāks tecēt neilgi (sekundes daļu) pēc laika brīža T+tT+t.

Iedaļas noskaidrošanas piemērs, N = 11, t = 3. Temperatūra, kas uzstādīta laika brīdī T = 5, tiek sajusta neilgi pēc laika brīža T = 5 + 3 = 8.
Iedaļas noskaidrošanas piemērs, N = 11, t = 3. Temperatūra, kas uzstādīta laika brīdī T = 5, tiek sajusta neilgi pēc laika brīža T = 5 + 3 = 8.

Karlsons drīkst mainīt iestatīto iedaļu katru sekundi (precīzi veselos laika brīžos T=0,1,2,3,…T = 0, 1, 2, 3, \ldots).

Uzrakstiet datorprogrammu, kas zināmiem NN un tt nosaka nezināmo XX pēc iespējas ātrāk!

Komunikācija

Šis ir interaktīvs uzdevums. Jūsu programmai, sākot darbu, pirmā ievada rinda satur divus veselus skaitļus NN un tt (1≤N≤109, 0≤t≤2000, t≤N)(1 \leq N \leq 10^9, \ 0 \leq t \leq 2000, \ t \leq N). XX vērtību (1≤X≤N1 \leq X \leq N) vērtēšanas sistēma patur slepenībā.

Jūsu programma var veikt vaicājumus, tos rakstot izvadā sekojošā formātā: «? SiS_i», kur SiS_i ir naturāls skaitlis no 11 līdz NN (ieskaitot). Sākot no vaicājuma ar kārtas numuru t+1t+1, pēc ii-tā vaicājuma ievadīšanas vērtēšanas sistēma atbild uz (i−t)(i-t)-to vaicājumu nākamajā ievada rindā:

  • Ja Si−t<XS_{i-t} < X →\rightarrow atbilde ir −1-1
  • Ja Si−t>XS_{i-t} > X →\rightarrow atbilde ir 11
  • Ja Si−t=XS_{i-t} = X →\rightarrow atbilde ir 00

Kad pareizā XX vērtība ir noskaidrota, jūsu programmai jāizvada «! XX», kur XX - atbilstošā patīkamās temperatūras iedaļa. Vērtēšanas sistēmu uz šādu vaicājumu neatbildēs un nepieņems sekojošus vaicājumus.

Pamattestēšanas laikā sistēma XX vērtību var izvēlēties adaptīvi atkarībā no veiktajiem vaicājumiem.

Apakšuzdevumi un to vērtēšana

#Apakšuzdevuma aprakstsPunkti
1.

t=0t=0

6
2.

N≤2t, t≠0N \leq 2t, \ t \neq 0

6
3.

N≤t2, t≠0N \leq t^2, \ t \neq 0

12
4.

t=1t=1

24
5.

t≥2t \geq 2

52
Apakšuzdevumu punktu summa = 100.

Piemērs

Vērtēšanas sistēma

Jūsu programma

  1. Vērtēšanas sistēma:
    11 3
  2. Jūsu programma:
    ? 5
    ? 1
    ? 2
    ? 10
  3. Vērtēšanas sistēma:
    -1
  4. Jūsu programma:
    ? 11
  5. Vērtēšanas sistēma:
    -1
  6. Jūsu programma:
    ? 7
  7. Vērtēšanas sistēma:
    -1
  8. Jūsu programma:
    ? 8
  9. Vērtēšanas sistēma:
    1
  10. Jūsu programma:
    ? 3
  11. Vērtēšanas sistēma:
    1
  12. Jūsu programma:
    ? 9
  13. Vērtēšanas sistēma:
    -1
  14. Jūsu programma:
    ? 4
  15. Vērtēšanas sistēma:
    0
  16. Jūsu programma:
    ! 8

Piezīmes

Lai garantētu, ka jūsu programmas "vaicājumus" saņem vērtēšanas sistēma, jums ir "jāsinhronizē" (flush) izvaddatu plūsma (stdout) pēc katra vaicājuma. Vairāk par datu ievadi un izvadi interaktīvajos uzdevumos lasiet šeit.