A. Qodirali va Sonlar Sarguzashti
Xotira: 32 MB, Vaqt: 1000 msQodirali o‘zini haqiqiy raqamlar sehrgari deb biladi va har safar yangi sonli o‘yinlarni kashf etishni yoqtiradi. Bugun esa u qo‘lida uzunligi \(n\) bo‘lgan 0-indeksli \(arr\) massiv bilan o‘ynayapti.
Siz \([0, n-1]\) oraliqdan \(k\) ta son ( \(k \ge 2\) ) tanlaysiz. Qoidaga ko‘ra, tanlagan sonlaringiz orasida \(0\) va \(n-1\) albatta bo‘lishi kerak.
Qodirali tanlagan indeklaringizdan yangi \(ind\) massiv tuzadi. Endi, bu massiv yordamida u o‘zining maxsus «qiziqarli qiymat»ini quyidagicha hisoblaydi:
\[s = \sum_{i=1}^{k} (-1)^{i+1} \cdot (ind_i - ind_{i-1}) \cdot arr[ind_i]\]Sizning vazifangiz – shunday indekslar to‘plamini tanlash kerakki, hosil bo‘ladigan \(s\) maksimal qiymatga ega bo‘lsin. Eng kattasini toping va ekranga chiqaring!
1-qatorida \(n\) soni. \(2 \le n \le 10^5\)
2-qatorida \(n\) ta sonli \(arr\) massiv kiritiladi. \(1 \le arr[i] \le 10^9\)
Eng maksimal \(s\) ni chiqaring.
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
5 17 14 15 15 8 |
37 |
| 2 |
10 12 16 10 14 18 11 14 1 6 4 |
91 |
B. Ko'prikdan o'tish
Xotira: 128 MB, Vaqt: 1000 msOsma ko‘prik chuqur darani kesib o‘tadi. Odamlar ko‘prikdan guruh bo‘lib o‘tishlari mumkin, ammo ko'prik juda ham eski bo'lganligi uchun, hammani bir vaqtda ko'tara olmaydi, boshqa so'zlar bilan aytganda bir vaqtda ko'prikdan faqatgina 1 ta guruh o'tishi mumkin va guruhdagi odamlar soni M tadan oshmasligi kerak. Guruhning ko‘prikdan o‘tish vaqti shu guruhdagi eng sekin odamning tezligiga bog‘liq. Siz ko‘prik xavfsizligi uchun mas’ulsiz va guruhlarning o‘tishini nazorat qilasiz.
Odamlar navbatda turishgan; oldingi guruh o‘tib bo‘lgach, siz navbatdagi bir necha kishiga “endi o‘tishingiz mumkin” deb ruxsat berasiz. Guruhlar turli hajmda bo‘lishi mumkin, lekin hech bir guruhda M tadan ortiq odam bo‘lmasligi shart. Maqsad — odamlarning tartibini buzmasdan, hammani eng qisqa umumiy vaqt ichida ko'prikdan o‘tkazishdir.
Kirishning birinchi qatorida bitta butun son \(T\) - testlar soni kiritiladi. Har bir test quyidagi formatda kiritiladi:
- Birinchi qatorda \(N\) hamda \(M\) - odamlar soni hamda guruh uchun cheklov qiymati kiritiladi.
- Keyingi qatorda N ta butun son - har bir odamning ko'prikdan o'tish vaqti kiritiladi. Bunda 1 - son, navbat boshida turgan insonga, N - son esa navbat oxiridagi odamga to'g'ri keladi.
\(1 \le T \le 10^4\)
\(1 \le N \le 10^5\)
\(1 \le M \le min(100, N)\)
\(N\) ning barcha testlardagi umumiy qiymati \(5 \times 10^5\) dan oshmaydi
Har bir test uchun, alohida qatorda bitta butun son, hamma odam ko'prikdan xavfsiz o'tishi uchun minimal qancha vaqt ketishini chop eting.
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
3 5 2 1 2 3 4 5 4 3 5 1 2 6 6 3 3 3 3 3 3 3 |
9 11 6 |
C. Ajoyib juftliklar 3
Xotira: 32 MB, Vaqt: 1000 msJavohirning ustozi Mehriddin unga matematik masala berdi. Ammo u juda erinchoqligi uchun dastur tuzishga qaror qildi. Masala sharti quyidagicha: n va s natural sonlari beriladi, sizning vazifangiz n xonali yig’indisi s ga teng bo’lgan eng kichik va eng katta ikkita qiymatni topish. Agar bunday qiymatlar mavjud bo’lmasa, "-1 -1" (qo'shtirnoqsiz) ni chop eting
Kirish faylining birinchi qatorida \(n(1 \le \ n \le \ 10^5)\)natural va \(s (0 \le s \le 10 ^ {18}\) butun sonlar kiritiladi
Chiqish faylining yagona satrida masala jovobi chop etilsin
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
2 1 |
10 10 |
| 2 |
3 10 |
109 910 |
D. Psevdokod
Xotira: 256 MB, Vaqt: 3000 msNyuboy CP(Competitive Programming)ga qiziqadi. U hozir bitta masalani ishlayotgan edi. Nyuboy ushbu masalani 2-urinishda hal qildi. Sizga Nyuboyning 1-yechimi beriladi. Siz ushbu masalani ishlay olasizmi?
!!! Nyuboyning 1-yechimidagi yagona muammo Time Limit edi.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int n, q; cin >> n >> q;
vector <int> a(n + 1);
for (int i = 1; i <= n; ++ i) cin >> a[i];
while (q --){
int l, r, k;
cin >> l >> r >> k;
vector <int> b;
for (int i = l; i <= r; ++ i) b.push_back(a[i]);
sort(b.begin(), b.end());
cout << b[k - 1] << '\n';
}
return 0;
}
Birinchi qatorda n va q natural sonlari kiritiladi. \((n, q \le 10^5)\)
Ikkinchi qatorda n ta natural son kiritiladi. \((1 \le i \le n , a[i] \le 10^5)\)
Keyingi q ta qatorning har birida l, r va k natural sonlari kiritiladi.
\((1 \le l \le r \le n, k \le r - l + 1)\)
Masalaning javobini chop eting.
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
5 4 3 2 1 5 4 1 4 3 1 5 2 1 1 1 3 5 3 |
3 2 3 5 |
E. Maxsus topshiriq
Xotira: 256 MB, Vaqt: 1000 msMashhur tadbirkor Aziz Asqarov, N ta korxonaga egalik qiladi. Uning yaqin do‘sti, taniqli moliyachi Bekzod Rustamov esa “TUIT Bank” xolding kompaniyasiga ega bo‘lib, unda ham N ta bank mavjud.
Ularning uzoq yillik hamkorligi tufayli — Azizning korxonalari faqat Bekzodning banklaridan kredit oladi, va Bekzodning banklari faqat Azizning korxonalariga kredit beradi. Kredit summalari soliqlardan qochish maqsadida sir tutilgan.
Ammo bir kuni ularning eski raqibi, Moliyaviy nazorat qo‘mitasi boshlig‘i Jamshid Karimov, o‘tmishdagi raqobatdan o‘ch olishga qaror qiladi. Jamshidning maqsadi — Aziz va Bekzod o‘rtasidagi barcha kredit operatsiyalarini fosh etish.
Avvalo, Jamshidning inspektorlari Azizning korxonalaridan ayrim hujjatlarni qo‘lga kiritishdi.
Har bir korxona uchun jami olingan kredit miqdori aniqlanib, bu SR[i] deb belgilandi.
Keyin esa Bekzodning banklarida o‘tkazilgan reydlarda har bir bank tomonidan berilgan jami kredit miqdori topildi — bu SC[j] qiymatlari sifatida yozildi.
Endi Jamshidning maqsadi — ushbu ma’lumotlar asosida kredit matritsasini tiklash.
Bu matritsa N×N o‘lchamdagi jadval bo‘lib, har bir elementi
A[i, j] = i-korxona Bekzodning j-bankidan olgan kredit miqdori
ko‘rinishida bo‘ladi.
Ma’lumki, har bir kredit miqdori 0 dan 100 gacha bo‘lgan butun son.
Ammo Jamshid olgan ma’lumotlar soxtalashtirilgan bo‘lishi mumkin, shuning uchun bunday matritsani tuzish imkonsiz holatlar ham bo‘ladi.
Birinchi qatorda bitta butun son — N (2 ≤ N ≤ 100) kiritiladi.
Ikkinchi qatorda SR[i] qiymatlar — har bir korxona olgan jami kreditlar (0 ≤ SR[i] ≤ 32000) beriladi.
Uchinchi qatorda SC[j] qiymatlar — har bir bank bergan jami kreditlar (0 ≤ SC[j] ≤ 32000) kiritiladi.
\(\sum SR[i] = \sum SC[j] \) ekanligi kafolatlanadi
Agar bunday kredit matritsasini tuzishning iloji bo‘lmasa, “NO” deb chiqaring.
Aks holda:
- Birinchi qatorda “YES” deb yozing;
- Keyingi N qatorda esa mos holda A[i, j] elementlarni chiqaring (bo‘sh joy bilan ajratilgan holda).
Agar bir nechta yechimlar mavjud bo‘lsa — istalganini chiqarish mumkin.
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
3 15 10 3 11 5 12 |
YES 10 0 5 0 3 7 1 2 0 |
| 2 |
2 201 0 100 101 |
NO |
F. Sehrli sonlar
Xotira: 32 MB, Vaqt: 1000 msBilmasvoy raqamlarni juda yaxshi ko‘radi. Har kuni u turli sonlar bilan o‘ynab, “sehrli sonlar” deb nomlagan sonlarni izlaydi.
Uning fikricha, sonning sehrli bo‘lishi uchun uning raqamlari yig‘indisi ma’lum bir \(S\) soniga teng bo‘lishi kerak.
Endi Bilmasvoy bir oraliqni tanladi: \([A, B]\). U shunday savolga javob izlamoqda: Shu \([A, B]\) oraliqda nechta sehrli son mavjud? Va ular orasida eng kichigi qaysi?
Bilmasvoy juda charchagan, shuning uchun u bu ishni kompyuterga topshirishni xohlaydi. Uning o‘rniga shunday dastur yozingki, u sehrli sonlar sonini va eng kichik sehrli sonni topib bersin.
Yagona qatorda uchta butun son \(A, B, S\)beriladi, mos ravishda Bilmasvoy tanlagan oraliq hamda sehrli sonning raqamlari yig'indisi teng bo'lishi kerak bo'lgan son. \(1\le A \le B <10^{15}, 1\le S\le 135)\)
Birinchi qatorda — [A, B] oraliqda raqamlari yig‘indisi \(S\) ga teng bo‘lgan sonlar soni.
Ikkinchi qatorda — shunday sonlardan eng kichigini chiqaring.
Eng kamida bitta sehrli son bolishi kafolatlanadi.
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
1 9 5 |
1 5 |
| 2 |
1 100 10 |
9 19 |
G. Parvoz vaqti
Xotira: 32 MB, Vaqt: 1000 msICPC ishtirokchilari tayyorgarlik uchun chet elga yo‘l olishdi. Ular har daqiqadan unumli foydalanishni xohlagani uchun samolyotda uchish davomida masalalar yechmoqchi. Ularda masalalar ustida ishlash uchun eng kamida qancha vaqt borligini aniqlang.
Kirishning dastlabki satrida samolyotning uchish vaqti \(hh:mm\) ko'rinishida kiritiladi.
Keyingi satrda qo'nish vaqti \(hh:mm\) formatida kiritiladi.
Uchinchi satrda mintaqalar orasidagi soatlar farqi kiritiladi. Farq -12 dan +12 gacha bo'lishi mumkin.
\(00 \le hh \le 23\)
\(00 \le mm \le 59\)
Minimum parvoz vaqtini \(hh:mm\) formatida chop eting.
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
12:00 13:00 0 |
01:00 |
| 2 |
23:00 01:00 0 |
02:00 |
| 3 |
01:50 12:50 +1 |
10:00 |
H. Zarif sayohati
Xotira: 32 MB, Vaqt: 1000 msSayohatchi Zarif dekart koordinatalar sistemasining \((x_1, y_1)\) nuqtasidan undan farqli bo'lgan \((x_2, y_2)\) nuqtasiga yetib bormoqchi. Lekin u sakrashni birdan qila olmaydi, oldin \((x_1, y_1)\) dan turib undan farqli bo'lgan \((x_3, y_3)\) nuqtaga yurib, keyin \((x_3, y_3)\) nuqtadan undan farqli \((x_2, y_2)\) nuqtaga o'tmoqchi. Yagona sharti, o'tish davomida shunaqangi \((x_3, y_3)\) koordinatalarni tanlamoqchiki, butun sayohati davomida \((x_1, y_1), (x_2, y_2), (x_3, y_3)\) nuqtalaridan tashqari boshqa umuman butun koordinatali nuqtalar ustidan bosib o'tmasligi kerak.
Birinchi qatorda bitta butun son \(T (1 \leq T \leq 10^5) \) testlar soni kiritiladi.
Har bir test uchun yangi qatorda to'rtta butun son, \(x_1, y_1, x_2, y_2\) sonlari kiritiladi. Sonlarning absolut qiymati \(10^9\) dan oshmasligi kafolatlanadi.
Har bir test uchun yangi qatordan, probel bilan ajratilgan \((x_3, y_3)\) koordinatani chiqaring. \(|x_3|, |y_3| \leq 2*10^9\) bo'lishi lozim. Istalgan yechimni chiqarishingiz mumkin
| # | INPUT.TXT | OUTPUT.TXT |
|---|---|---|
| 1 |
3 0 0 100 0 0 0 12 8 -1000000000 1000000000 1000000000 -1000000000 |
101 -1 11 -1 1000000001 999999999 |