SamCoding Round 5 (Div. 3)


A. Halqa o'yini

Vaqt chegarasi: 1000 ms | Xotira chegarasi: 64 mb

Stolda \(n\) ta askar doira shaklida joylashgan va soat yo'nalishi bo'yicha \(1\) dan \(n\) gacha raqamlangan. O'yin quyidagicha o'tkaziladi: \(1\)-raqamli askardan boshlab soat yo'nalishi bo'yicha sanaladi va har safar navbatdagi \(k\)-inchi askar doiradan chetlashtiriladi. Chetlashtirilgan askar hisobga olinmaydi, sanash chetlashtirilmagan askarlar orasida davom etadi. Bu jarayon doirada faqat bitta askar qolguncha davom etadi.

Oxirigacha qolgan (g'olib bo'lgan) askarning boshlang'ich raqamini toping.

Kirish ma'lumotlari

Bitta qatorda ikkita butun son \(n\) va \(k\) beriladi (\(1 \le n \le 10^6, 1 \le k \le 10^9\)) — askarlar soni va har safar chetlashtiriladigan askarning tartib raqami.

Chiqish ma'lumotlari

G'olib bo'lgan askarning boshlang'ich raqamini chop eting.

Misollar
# Input.txt Output.txt
1
7 3
4
2
5 2
3

B. Kutilgan fragging

Vaqt chegarasi: 1500 ms | Xotira chegarasi: 256 mb

Siz raundning oxirgi tirik o'yinchisisiz — klassik \(1vN\) clutch holatidasiz. Qarshingizda n ta dushman qoldi, va siz ular bilan birma-bir, o'zingiz tanlagan tartibda jang qilasiz (masalan, xonalarni birin-ketin tekshirasiz).

i-dushman bilan jangga kirganingizda:
- \(p_i \)% ehtimol bilan siz g'alaba qozonasiz — bu holda \(r_i\) frag-ball olasiz va navbatdagi dushman bilan jangga o'tasiz.
- qolgan ehtimol bilan (100 - \(p_i\))% siz mag'lub bo'lasiz (o'lasiz) — round shu yerda tugaydi, qolgan dushmanlar bilan jang bo'lmaydi va ulardan ball ololmaysiz.

Sizga dushmanlar bilan jang qilish tartibini shunday tanlash kerakki, o'yin oxirida to'playdigan kutilgan (expected) umumiy ball eng katta bo'lsin.

Kirish ma'lumotlari

- 1-qator: \(n (1 ≤ n ≤ 2×10^5)\)
- Keyingi n qatorning har birida: \(p_i, r_i — i\)-dushmanni yengish ehtimoli foizda \((1 ≤ p_i ≤ 100)\) va uni yengish uchun beriladigan frag-ball \((1 ≤ r_i ≤ 10^9)\)

Chiqish ma'lumotlari

Optimal tartibda o'ynalganda olinadigan maksimal kutilgan ballni chiqaring \(10^{-6}\) aniqlikda.

Misollar
# Input.txt Output.txt
1
2
50 100
90 10
54.500000
2
2
100 5
50 100
55.000000
3
3
50 100
90 10
20 50
59.000000
4
3
41 467
75 300
41 151
387.639825

C. Dam olish bekatlari

Vaqt chegarasi: 1000 ms | Xotira chegarasi: 64 mb

Cho'lda uzun bir yo'l bor, va bu yo'l bo'ylab \(n\) ta joyda quduq qazilgan — ularning yo'l boshidan masofalari \(x_1, x_2, \dots, x_n\) (o'sish tartibida berilgan, barchasi turli). Yo'lovchilar karvoni shu quduqlardan \(m\) tasini tanlab, ularni dam olish bekati sifatida belgilamoqchi.

Issiqda charchamaslik uchun, tanlangan bekatlar orasidagi eng qisqa masofa iloji boricha katta bo'lishi kerak (ya'ni ikkita bekat bir-biriga juda yaqin bo'lib qolmasin). Karvon boshlig'i \(m\) ta bekatni shunday tanlamoqchi — eng yaqin turgan ikkita bekat orasidagi masofa maksimal bo'lsin.

Shu maksimal qiymatni toping.

Kirish ma'lumotlari

Birinchi qatorda ikkita butun son \(n\) va \(m\) beriladi (\(2 \le m \le n \le 2 \times 10^5\)).

Ikkinchi qatorda \(n\) ta butun son \(x_1 < x_2 < \dots < x_n\) beriladi (\(0 \le x_i \le 10^9\)) — quduqlarning yo'l boshidan masofalari.

Chiqish ma'lumotlari

Tanlangan \(m\) ta bekat orasidagi eng qisqa masofaning maksimal mumkin bo'lgan qiymatini chop eting.

Misollar
# Input.txt Output.txt
1
5 3
1 2 4 8 9
3
2
5 3
1 2 100 101 200
99

D. Ikkilik qidiruv

Vaqt chegarasi: 2000 ms | Xotira chegarasi: 64 mb

Sizga \(n\) ta butun sondan iborat \(a_1, a_2, \dots, a_n\) massiv beriladi (o'sish tartibida joylashgan). Shuningdek, sizga \(t\) ta so'rov beriladi. Har bir so'rovda bitta \(q\) soni berilib — massivda shu son bor yoki yo'qligini aniqlashingiz talab etiladi.

Kirish ma'lumotlari

Birinchi qatorda ikkita butun son \(n\) va \(t\) beriladi (\(1 \le n, t \le 2 \times 10^5\)).

Ikkinchi qatorda \(n\) ta butun son \(a_1 < a_2 < \dots < a_n\) beriladi (\(-10^9 \le a_i \le 10^9\)).

Keyingi \(t\) ta qatorning har birida bitta butun son \(q\) beriladi (\(-10^9 \le q \le 10^9\)) — qidirilayotgan son.

Chiqish ma'lumotlari

Har bir so'rov uchun alohida qatorda, agar \(q\) soni massivda mavjud bo'lsa "YES", aks holda "NO" deb chop eting.

Misollar
# Input.txt Output.txt
1
6 9
1 3 5 7 9 11
1
2
3
4
5
6
7
8
9
YES
NO
YES
NO
YES
NO
YES
NO
YES

E. Feruz Ustaning Munchoqlari

Vaqt chegarasi: 2000 ms | Xotira chegarasi: 256 mb

Qadim zamonlarda mashhur bo'lgan Feruz degan zargar ustaning bisotida n dona nodir munchoq saqlanar edi, ularning har biri o'ziga xos vaznga ega bo'lib, bu vaznlar \(a_1, a_2, \dots, a_n\) qiymatlar bilan ifodalanardi.

Ustaning bir g'alati odati bor edi: u ustaxonasini yopishdan burun, qo'lidagi munchoqlarni birma-bir savdogarlarga hadya qilib yuborardi. Biroq bu hadya jarayoni ixtiyoriy tartibda emas, balki qat'iy bir intizom asosida kechardi. Dastlabki hadya etiladigan munchoqni usta o'zi xohlagancha, erkin tanlab olardi. Ammo undan keyingi har bir qadamda hadya qilinadigan munchoqning vazni juftlik xususiyati jihatidan oldingi hadya etilgan munchoqnikidan albatta farqli bo'lishi shart edi: agar avvalgi munchoqning vazni toq son bo'lsa, endigisi so'zsiz juft son bo'lishi lozim edi, va aksincha. Qaysidir bosqichda ushbu talabga javob beradigan munchoq qolmasa, hadya jarayoni beixtiyor to'xtab qolardi, va shu topilgan zahoti qo'lida qolgan munchoqlar abadiy uning xazinasida saqlanib qolaverardi.

Feruz usta o'ta hisobli va tejamkor kishi bo'lgani bois, u o'z bisotida qolib ketadigan munchoqlarning umumiy vazni imkon qadar oz bo'lishini orzu qilardi. Shu maqsadda u dastlabki qadamda qaysi munchoqni tanlashni va har keyingi bosqichda qaysi mos munchoqqa qo'l urishni — aynan shu maqsad, ya'ni qo'lida qolib ketadigan munchoqlar vaznining yig'indisini eng kamiga tushirish — yo'lida hal etardi.

Sizdan talab qilinadigan: berilgan \(n\) ta munchoqning vaznlari asosida, Feruz usta eng unumli tarzda harakat qilganda, jarayon yakunida uning huzurida qolib ketadigan munchoqlar vaznining eng kichik mumkin bo'lgan yig'indisini toping.

Kirish ma'lumotlari

Birinchi qatorda bitta butun son \(n (1 \le n \le 2000)\) — munchoqlar soni keltiriladi.
Ikkinchi qatorda \(n\) ta butun son \(a_1, a_2, \dots, a_n\) \((0 \le a_i \le 10^6)\) — har bir munchoqning vazni keltiriladi.

Chiqish ma'lumotlari

Yagona butun son — jarayon yakunlangach ustaning huzurida qolib ketgan munchoqlar vaznining minimal yig'indisi.

Misollar
# Input.txt Output.txt
1
5
1 5 7 8 2
0
2
6
5 1 2 4 6 3
0
3
2
1000000 1000000
1000000

F. Uch Hunar

Vaqt chegarasi: 2000 ms | Xotira chegarasi: 256 mb

Qadim zamonda, ipak yo'li ustida joylashgan gavjum bir shaharda, mohir hunarmand Sulton Mirzo yashar edi. U yiliga bir marta, muqaddas bayram arafasida, o'z shogirdlariga uchta buyuk hunar sirlarini — kulolchilik, to'qimachilik va zargarlik san'atini — o'rgatish uchun alohida kunlar tayinlar edi.

Ushbu tayyorgarlik \(n\) kunlik muddatga cho'zilgan bo'lib, har bir kunning o'ziga xos xususiyati bor edi: ma'lum bir kunda shaharning turli mahallalaridan kelib, ustaga yordam berishga va hunar sirlarini o'rganishga tayyor bo'lgan shogirdlar soni har xil edi. Aniqrog'i, \(i\)-kun uchun quyidagilar ma'lum edi:

  • o'sha kuni kulolchilikka yordam bera oladigan shogirdlar soni — \(a_i\);
  • o'sha kuni to'qimachilikka yordam bera oladigan shogirdlar soni — \(b_i\);
  • o'sha kuni zargarlikka yordam bera oladigan shogirdlar soni — \(c_i\).

Sulton Mirzoning qat'iy odati shunday ediki, u har bir hunar uchun alohida, boshqalaridan farqli bir kunni tanlashi shart edi — ya'ni kulolchilik uchun tanlangan kun, to'qimachilik yoki zargarlik uchun tanlangan kunlar bilan mos kelmasligi lozim edi. Boshqacha aytganda, \(n\) kun ichidan uchta har xil kun tanlanib, ularning har biri faqat bitta hunarga bag'ishlanardi.

Usta o'zining ustaxonasiga imkon qadar ko'proq shogird jalb qilishni, ya'ni tanlangan uchta kunda yig'iladigan shogirdlar sonining umumiy yig'indisini maksimal qilishni orzu qilardi.

Sizdan talab qilinadigan: har bir sinov uchun berilgan ma'lumotlar asosida, Sulton Mirzo qanday tanlov qilmasin, uchta turli kunni tanlab olib, ularda yig'iladigan shogirdlarning eng katta mumkin bo'lgan umumiy sonini toping.

Kirish ma'lumotlari

Birinchi qatorda bitta butun son \(t (1 \le t \le 10^4) \)— sinovlar soni keltiriladi.

Har bir sinov uchun:
- Birinchi qatorda bitta butun son \(n (3 \le n \le 10^5)\) — tayyorgarlik kunlari soni;
- Ikkinchi qatorda \(n\) ta butun son \(a_1, a_2, \dots, a_n\) (\(1 \le a_i \le 10^8\)) — har bir kunda kulolchilikka tayyor shogirdlar soni;
- Uchinchi qatorda \(n\) ta butun son \(b_1, b_2, \dots, b_n\) (\(1 \le b_i \le 10^8\)) — har bir kunda to'qimachilikka tayyor shogirdlar soni;
- To'rtinchi qatorda \(n\) ta butun son \(c_1, c_2, \dots, c_n\) (\(1 \le c_i \le 10^8\)) — har bir kunda zargarlikka tayyor shogirdlar soni.

Barcha sinovlardagi \(n\) qiymatlari yig'indisi \(10^5\) dan oshmaydi.

Chiqish ma'lumotlari

Har bir test uchun bitta butun son — tanlangan uchta turli kunda yig'ilishi mumkin bo'lgan shogirdlarning eng katta umumiy sonini chop eting.

Misollar
# Input.txt Output.txt
1
1
3
1 10 1
10 1 1
1 1 10
30
2
3
3
5 5 5
5 5 5
5 5 5
3
1 2 3
3 2 1
2 3 1
4
100 1 1 1
1 100 1 1
1 1 100 1
15
9
300

G. Beshtosh o'yini

Vaqt chegarasi: 1000 ms | Xotira chegarasi: 64 mb

Qishloq bolalari orasida mashhur bo'lgan Beshtosh o'yinining bir varianti bor: yerga \(n\) ta g'uj-g'uj tosh uyumlari qo'yiladi, \(i\)-uyumda \(a_i\) dona tosh bo'ladi. Ikki o'yinchi — Anvar va Botir — navbat bilan yurish qiladi. Anvar birinchi bo'lib boshlaydi.

Har bir yurishda o'yinchi istalgan bitta uyumni tanlaydi va o'sha uyumdan kamida bitta, istagancha ko'p toshni olib tashlaydi (butun uyumni ham olib tashlash mumkin). Navbatida yura olmagan o'yinchi (ya'ni barcha uyumlar bo'sh bo'lib qolganda yurish kerak bo'lgan o'yinchi) yutqazadi.

Ikkala o'yinchi ham eng aqlli (optimal) tarzda o'ynaydi. Shu holatda kim g'olib chiqadi?

Nega bu qiziq?

Qarasangiz, uyumlar soni va toshlar joylashuvi juda xilma-xil bo'lishi mumkin — lekin g'alaba faqat bitta oddiy amalga bog'liq ekan: barcha \(a_i\) larning XOR (⊕) yig'indisi! Agar bu yig'indi 0 bo'lsa, boshlovchi (Anvar) qancha urinmasin albatta yutqazadi. Aks holda, u albatta g'olib strategiyasini topa oladi. Bu o'yinlar nazariyasining eng mashhur va "sehrli" natijalaridan biri.

Kirish ma'lumotlari

1-qator: \(t\) (\(1 \le t \le 10^4\)) — sinovlar soni.
Har bir sinov uchun:

  •   \(n\) (\(1 \le n \le 10^5\)) — tosh uyumlari soni;
  •   2-qator: \(n\) ta butun son \(a_1, \dots, a_n\) (\(0 \le a_i \le 10^9\)) — har bir uyumdagi toshlar soni.

Barcha sinovlardagi n larning yig'indisi \(2 \times 10^5\) dan oshmaydi.

Chiqish ma'lumotlari

Har bir sinov uchun — kim g'olib bo'lishini chop eting: Anvar yoki Botir.

Misollar
# Input.txt Output.txt
1
2
3
1 2 3
2
3 4
Botir
Anvar
2
1
1
0
Botir
3
1
1
5
Anvar
Izoh

1-test:
- [1,2,3]: \(1\oplus2\oplus3=0\) → boshlovchi (Anvar) yutqazadi → Botir
- [3,4]: \(3\oplus4=7\ne0\) → Anvar \(4\to3\) qiladi, \([3,3]\) hosil bo'ladi, so'ng oyna strategiyasi bilan g'olib chiqadi → Anvar

2-test:
[0] — tosh yo'q, Anvar yura olmaydi, zudlik bilan yutqazadi → Botir

3-test:
[5] — \(5\ne0\), Anvar hammasini bir yurishda oladi, Botirga yurish qolmaydi → Anvar

Qoida: \(\text{XOR} =0\) → boshlovchi yutqazadi; \(\text{XOR} \ne0\) → boshlovchi yutadi.

H. Shaxmat

Vaqt chegarasi: 1000 ms | Xotira chegarasi: 128 mb

  Ushbu masalada sizga \(8 \times 8\) maydonda bo'lib o'tadigan standart shaxmat o'yinining qaysidur jarayoni beriladi. Bu jarayonda yurish navbati sizga kelib qolgan va usha jarayonda faqatgina bitta yurish bilan raqibni mot qilishingiz kerak bo'ladi.

Misol: Agar siz oq toshlarda o'ynayotgan bo'lsangiz C5 da joylashgan ot ni D7 ga olib o'tish orqali raqibni bir marotaba yurishda mot qilish mumkin (1-test).

Shaxmat tosh donalari quyidagicha belgilanadi: King(shox) - K, Queen(farzin) - Q, Bishop(fil) - B, Knight(ot) - N, Rook(rux) - R va Pawn(piyoda) - P. Oq va qora toshlar mos ravishda katta kichik harflar bilan va bo'sh maydon nuqta bilan ifodalanadi.

Kirish ma'lumotlari

Kirish faylining dastlabki satrida \(k\) (\(0 \le k \le 1\)) butun son ya'ni \(0\) yoki \(1\) bu mos ravishda siz o'yinni qora yoki oq toshlarda davom ettirishingizni anglatadi. Keyin \(8 \times 8\) maydonda o'yin jarayoni tasvirlanadi.

Chiqish ma'lumotlari

Siz shunday bir toshni boshqa maydonga kuchirish orqali shoxga hujum qilishingiz kerak netijada shox hujum ostida qolsin. Ko'chirilishi kerak bo'lgan toshning dastlabki va keyingi koordinatasini mos ravishda probil bilan ajratilgan holda (agar bunday yechimlar bir nechta bo'lsa istalganini) chop eting. Yechim mavjudligi kafolatlanadi.

Misollar
# Input.txt Output.txt
1
1
...r....
.pk.....
...pP...
..N.....
........
........
........
..R....K
C5 D7
2
0
....K.R.
.Pp..P.P
....Bb..
..pP....
R.....p.
.......p
....r...
.......k
C7 C8
Izoh

Piyoda harakati siz oq yoki qora toshlarda o'ynashingizdan qati nazar faqat bir tomonlama bo'ladi 2-testga qarang.