A. Queue Game

Xotira: 10 MB, Vaqt: 300 ms
Masala

2 ta do'st, Akobir va Quvonchbek "Queue" game o'yini o'ynashmoqda. Bu o'yin shartiga ko'ra o'yinchilarga \(n\) ta sondan iborat sonlar to'plami \((a_1, a_2, a_3, ..., a_n)\) beriladi, o'yinni Akobir boshlab beradi. Akobir eng katta soni olib tashlaydi, Quvonchbek esa eng kichigini, shu tariqa o'yin davom etadi. Oxirida qolgan o'yinchi g'olib boladi. Sizning vazifangiz oxirida go'lib bo'lgan o'yinchi necha soni bilan qolganini topishdan iborat.

Kiruvchi ma'lumotlar:

Kiritish faylida 1-qatorida \(n (1 ≤ n ≤ 1000)\) butun soni kiritiladi. 2-qatorida \(n\) ta butun sonlar toplami \((a_1,a_2,…,a_n)(1 ≤ a_i ≤ 10^6)\) kiritiladi.

Chiquvchi ma'lumotlar:

Chiqish faylida g'olib bo'lgan o'yinchiga qolgan raqamni chop eting.

Izoh:

1-test:

  • Akobir sonlarda 3 ni olib tashlaydi.
  • Quvonchbek 1 ni olib tashlaydi.
  • Akobir g'olib.

Natija: 2.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
3
2 1 3
2

B. "Juda qo'rqinchli" ko'paytma

Xotira: 64 MB, Vaqt: 1000 ms
Masala

MAXAB va MINAB topshiriqlarini hal qilgandan so'ng, Sardor Azimjonga yanada qiyin topshiriq berish haqida o'ylab qoldi va quyidagi topshiriqni berishga qaror qildi.

\(N\) ta butun sondan iborat massiv berilgan. Bu massiv elementlarini ko'paytmasi qandaydir butun sonning kvadrati bo'la oladimi yoki yo'qligini tekshirish talab etiladi.

Azimjon bu topshiriqni hal qilishni uddalay olmadi. Sizchi buni hal qila olasizmi 😉?
 

Kiruvchi ma'lumotlar:

Birinchi qatorda sizga \(N\) natural soni beriladi.

Keyingi qatorda \(N\) ta butun son \(A\) massiv elementlari beriladi.

\(N ≤ 2*10^5 ,  |A_i|≤10^6\)

Chiquvchi ma'lumotlar:

Agar massiv elementlari masala shartini qanoatlantirsa "Yes", aks holda "No" so'zini chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
5
1 2 3 4 6
Yes

C. Optimize

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Quyidagi dastur yechimini chop eting!.
#include <iostream>
using namespace std;
int main(){
    int n;
    cin >> n;
    int *a = new int[n+1];
    for(int i = 1; i <= n; i ++) cin >> a[i];
    int q, t, id, m;
    cin >> q;
    for(int i = 0; i < q; i ++){
        cin >> t >> id;
        if(t == 0)
            cin >> a[id];
        else{
            m = 1;
            for(int j = 1; j <= n; j ++)
                if(id != j)
                    m = (1LL * m * a[j]) % 1000000007;
            cout << m << endl;
        }
    }
    return 0;
}

Kiruvchi ma'lumotlar:

Kirish faylining dastlabki satrida \(n (1 \le n \le 10^5)\) ning qiymati kiritiladi. Ikkinchi satrda \(n\) ta butun son \(a (0 \le a_i \le 10^9)\) massiv elementlari bo’sh joy bilan ajratilgan holda kiritiladi. Uchunchi satrda bitta butun son, \(q (1 \le q \le 10^5)\) soni kiritiladi. to’rtinchi qatordan boshlab \(q\) ta qatorda 2 xil turdagi so’rovdan biri kiritiladi. So’rovlar quyidagicha:
0 id \(a_{id}\) - 0 bilan boshlangan satrda \(id (1 \le id \le n)\) va \(a_{id} (0 \le a_{id} \le 10^9)\) kiritiladi.
1 id - 1 bilan boshlangan satrda faqat \(id (1 \le id \le n)\) kiritiladi.

Chiquvchi ma'lumotlar:

Kiritilgan qiymatlar uchun yuqoridagi dastur kodining natijasini chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
5 
1 2 3 4 5
3
1 3
0 2 4
1 4
40
60

D. Kevin o'yinchoqlar do'konida

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Kevin New Yorkda yolg'iz aylanib yurib ajoyib o'yinchoq do'koniga kirib qoldi. U yerda ko'plab o'yinchoqlar Kevinga yoqib qoldi. Ammo bu ancha ko'p pul bo'lishi aniq. Shu sababli o'yinchoq do'koni egasi unga bir imkoniyat berdi. Unga ko'ra u jammi pulning xohlagan joyiga plus amalini qo'yishi mumkin. Kevinga imkoni boricha kamroq pul to'lashida yordam bering.

Kiruvchi ma'lumotlar:

Kirish faylida natural son - jami qancha pul bo'lganligi. Bunda u 100 ming xonagacha uzunlikda bo'lishi mumkin.

Chiquvchi ma'lumotlar:

Chiqish faylida Kevin to'lashi mumkin bo'lgan eng kam pulni qiymatini chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
10000000001
2
2
1234
46
3
1231230000001
123124

E. Qismlarga bo'lish o'yini

Xotira: 16 MB, Vaqt: 1000 ms
Masala

Mirzo Ulug’bek kitob olgani kitob do’koniga bordi. Ming afsuski uning hamyonida birorta ham kitobga yetadigan puli yo’q edi. Buni chetdan kuzatib turgan kitobxona xo’jayini Mirzo Ulug’bekning kitobga qiziqishini ko’rganidan so’ng Mirzo Ulug’bekka kitob sovg’a qilish maqsadida unga o’yin o’ynashni taklif qildi, shu o’yinda Mirzo Ulug’bek necha ball yig’sa, shuncha kitobni sovg’a qilishini aytdi. Tabiiyki Mirzo Ulug’bek bunga ko’ndi va diqqat bilan o’yin shartlarini tingladi:

  • Mirzo Ulug’bekga nomanfiy butun sonlardan iborat massiv beriladi.
  • Mirzo Ulug’bek massivni ketma-ket elementlardan tashkil topgan, bo’sh bo’lmagan shunday 2 massivga ajratishi kerakki chap tomon elementlaridan tashkil topgan massiv elementlari yig’indisi o’ng tomon elementlaridan tashkil topgan massiv elementlari yig’indisiga teng bo’lishi kerak. Agar Mirzo Ulug’bek bu ishni amalga oshira olsa u 1 ball ga ega bo’ladi, aks holda o’yin o’z nihoyasiga yetadi.
  • Har bir muvoffaqiyatli turdan so’ng Mirzo Ulug’bek chap yoki o’ng tomon elementlaridan tashkil topgan massivni o’yindan tashqariga uloqtiradi va o’zida qolgan massiv bilan o’yinni davom ettiradi.

Masalan: dastlab Mirzo Ulug’bekda \([1,2,3,6]\) massivi mavjud bo’lsin, u bu massivni \([1,2,3]\), \([6]\) shaklida ikkiga taqsimlashi mumkin(+1 ball), shundan so’ng \([6]\) ni o’yindan chiqarib, o’yinni \([1,2,3]\) bilan davom ettiradi. U bu massivni \([1,2]\), \([3]\) shaklida ikkiga taqsimlashi mumkin(+1 ball), shundan so’ng \([3]\) ni o’yindan chiqarib, o’yinni \([1,2]\) bilan davom ettiradi. U bu massivni ikkiga taqsimlay olmaydi va o’yin nihoyasiga yetib Mirzo Ulug’bek 2 ball ga ega bo’ladi, ya’ni kitob do’konidan ixtiyoriy 2 ta kitobni tekinga olib ketishi mumkin bo’ladi.

Kiruvchi ma'lumotlar:

Dastlabki satrda bitta butun son, \(T(1 ≤ T ≤ 10)\) testlar soni kiritiladi. Keyingi satrdan boshlab har bir test uchun alohida ikkita satrning birinchi satrida \(N(1 ≤ N ≤ 2^{14})\) – massiv elementlari soni, ikkinchi satrida \(N\) ta \([0, 10^9]\) oralig’idagi butun son, ya’ni, Mirzo Ulug’bekdagi dastlabki massiv elementlari kiritiladi.

Chiquvchi ma'lumotlar:

Har bir test uchun alohida qatorda bittadan butun son, Mirzo Ulug’bek kitob do’konidan ko’pi bilan nechta kitobni tekinga olib ketishini chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
5
4
1 2 3 6
4
1 2 6 3
3
3 3 3
4
2 2 2 2
7
4 1 0 1 1 0 1
2
0
0
2
3

F. Oraliqlar daraxti

Xotira: 32 MB, Vaqt: 2000 ms
Masala

Azimjon N ta har xil elementdan iborat(qiymatlari takrorlanmaydigan) A massiv uchun 2×N-1 ta elementdan iborat T oraliqlar daraxti orqali minimum qiymatni hisoblash uchun quyidagi tartibda tuzdi:

for i in range(0, N): T[i+N-1] = A[i]

for i in range(N-2, -1, -1): T[i] = min(T[i*2+1], T[i*2+2])

Shundan so’ng o’zining A massivini tashlab yubordi va o’ziga 2×N-1 ta elementdan iborat T massivni saqlab qoldi. Azimjon uyda yo’qligidan foydalanib uning ukasi Azimjonning T massiv elementlarini qiymatlarini tartibini almashtirib qo’ydi, va hattoki ba’zi elementlarining qiymatini o’zgartirib ham qo’ygan bo’lishi mumkin. Bundan xabar topgan Azimjon o’zining T massivini qiymatlari almashgan bo’lsada yuqoridagi qonuniyatiga mos keladigan holda qayta tiklamoqchi bo’ldi. Qayta tiklaganida ham A massivga mos keladigan elementlar unikal(yagona)ligini saqlab qolishi kerak. Sizning vazifangiz Azimjon buni eplay oladimi yoki yo’qligini aniqlashdan iborat.

Kiruvchi ma'lumotlar:

Kirish faylining dastlabki satrida N=2k shaklidagi bitta butun son, N(1 ≤ N ≤ 218) soni kiritiladi. Keyingi satrda 2×N-1 ta son, Azimjonning ukasidan qolgan T(-109 ≤ Ti ≤ 109) massivining elementlari kiritiladi.

Chiquvchi ma'lumotlar:

Chiqish faylida agar Azimjon o’z massivini qayta tiklay olsa dastlabki satrda YES so’zini, keyingi satrda esa 2×N-1 ta elementdan iborat T massivining qayta tiklangan holatini (Agar yechimlar ko’p bo’ladigan bo’lsa leksikografik eng kichigini) chop eting, agar qayta tiklay olmasa yagona satrda NO so’zini chop eting.

Misollar:
# INPUT.TXT OUTPUT.TXT
1
4
3 1 3 1 2 4 1
YES
1 1 3 1 2 3 4 
2
2
1 1 1
NO
Kitob yaratilingan sana: 18-Oct-24 13:34