Masala #1141

Xotira 64 MB Vaqt 1000 ms Qiyinchiligi 67 %
14

  

G'alati o'rmon

Bu interaktiv vazifa.

O'rmonchi Bilmasvoy daraxt kesmoqda. U daraxt kesayotgan o'rmon \(N*N\) katakdan tashkil topgan bo'lib, har bir katakda bittadan daraxt mavjud. U daraxtlarni \(5*5\) shaxmat doskasi ko'rinishda kesib chiqdi. Bu yerda har bir katak \(M*M\) maydondan iborat. To'liqroq tushunishingiz uchun quyidagi rasmga e'tibor bering:

Bu yerda qora maydonlar daraxt kesilgan joylar.

 O'rmonchi uyiga qaytayotib asbob-uskunalarini olishni unutib qo'ydi. Lekin uning ish qurollari rasmdagi qora nuqta - ya'ni shaxmat shaklida kesilgan daraxtlarning markazida joylashganini biladi. Bilmasvoyga anjomlarini topishga yordam beruvchi dastur tuzing.


Kiruvchi ma'lumotlar:

Kirish faylining birinchi qatorida uchta butun son N, x va y butun sonlari mavjud. \((1 \le N, x, y \le 2*10^9)\).

Bu yerda N kvadrat shaklidagi o'rmonning bir tomoni, x va y rasmda qora bilan belgilangan istalgan koordinatadan biri.

Siz dasturga quyidagicha ko'rinishda so'rov yuborishingiz mumkin:

\("? \ x \ y"\). Bu yerda x va y o'rmonning istalgan koordinatasi. So'rovga javoban siz so'ragan koordinatada daraxt kesilgan bo'lsa  ″true″, aks holda ″false″ ko'rinishida javob olasiz. Agar siz yuborgan koordinata mavjud bo'lmasa, dastur shu zahoti tugaydi va \("Presentation \ error"\) xatoligini olasiz.

Dasturga ko'pi bilan 150 ta so'rov yuborishingiz mumkin. Agarda so'rovlar soni oshib ketsa, dastur shu zahoti tugaydi va  \("Time \ limit"\) xatoligini qaytaradi.


Chiquvchi ma'lumotlar:

Javobni topganingizdan so'ng, \("! \ x \ y"\) ko'rinishida so'rov yuborishingiz va dasturni tugatishingiz zarur.

ESLATMA: Interaktiv masalada sizning javobingizni hakamlar hay’ati qabul qila olishi uchun siz har bir so’rovingiz oxirida

  • Agar Pascal tilida ishlagan bo’lsangiz: flush(output)
  • Agar C/C++ tilida ishlagan bo’lsangiz fflush(stdout) yoki cout.flush()
  • Agar Java tilida ishlagan bo’lsangiz System.out.flush()
  • Agar pythonda ishlagan bo’lsangiz sys.stdout.flush()
  • Agar C# tilida ishlagan bo’lsangiz Console.Out.Flush()

Buyruqlardan birini yozishingiz kerak bo’ladi!


Misollar
# input.txt output.txt
1
20 4 9
false
true
true
? 2 9
? 9 14
? 11 9
! 10 9
Izoh:

       

Daraxtlar quyidagicha ko'rinishda kesilgan bo'lishi mumkin.

Unutmang, har doim M soni \(M \ge 3\)  bo'lgan toq sondir.

Yechimini yuborish
Bu amalni bajarish uchun tizimga kiring, agar profilingiz bo'lmasa istalgan payt ro'yxatdan o'tishingiz mumkin