A. Katta muammo
Xotira: 64 MB, Vaqt: 1000 msSiz maktabingizda yangi sinfga ko'chib o'tdingiz. Yangi sinfga borishingizdan avval u sinfni ikki kun davomida kuzatgansiz. Sinfda 1 dan n gacha raqamlangan o'rindiqlar bor. Siz ikkala kunda ham bo'sh bo'lgan joylargagina o'tirsa bo'ladi deb hisoblaysiz (Birinchi kundan yangi sinfda janjallashishni xoxlamaysiz). Endi siz o'tirish uchun nechta variantingiz borligini hisoblab ko'rmoqchisiz.
Birinchi qatorda n - o'rindiqlar soni kiritiladi.
Keyingi ikki qatorda har birining uzunligi n ga teng bo'lgan ikkita satr kiritiladi. Mos ravishda birinchi va ikkinchi kundagi o'rindiqlarning holati.
Satr faqat O va _ belgilaridan tashkil topgan bo'lib, bunda O - band o'rindiq, _ esa bo'sh o'rindiq ekanini ifodalaydi.
Yagona qatorda masala javobini chop eting.
1-testda birinchi va uchinchi o'rindiqlar har ikkala kunda ham bo'sh, shuning uchun faqat shu joylarga o'tirish mumkin
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
5 _O_O_ _O__O |
2 |
B. Qism satr
Xotira: 64 MB, Vaqt: 1000 mssubstring()
funksiyasi — ko‘pchilik dasturlash tillarida mavjud bo‘lgan va matnlar bilan ishlashda keng qo‘llaniladigan amal. U matnning bir qismini olish uchun ishlatiladi. Funksiya ikkita parametr — boshlang‘ich pozitsiya (start offset) va uzunlik (length) qabul qiladi. U aynan shu pozitsiyadan boshlab, berilgan uzunlikdagi yangi matnni qaytaradi.
Endi bir o‘ziga xos holatni ko‘rib chiqamiz: bitta matnga ushbu funksiya ketma-ket juda ko‘p marta qo‘llanildi. Har safar biz substring(s, start, length)
funksiyasidan foydalanib, matnning bir qismini olib, uni keyingi matn sifatida ishlatdik. Natijada, ehtimol ancha qisqargan yakuniy matn qolgan.
Barcha ketma-ket bajarilgan substring()
amallari natijasida hosil bo‘lgan yakuniy matnni aniqlang.
- 1-qator: — dastlabki matn beriladi
- 2-qator: — bajariladigan amallar soni beriladi
- Keyingi n qatorda — har bir qatorda ikkita butun son va beriladi:
- — har bir yangi oldingi natijadan tanlanadi.
- — substring chegaradan chiqib ketmasligi kerak.
Oxirgi amaldan so‘ng hosil bo‘lgan yakuniy matnni chop eting.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
helloworld 2 1 9 0 5 |
ellow |
2 |
abcdefghijklmnopqrstuvwxyz 8 1 24 1 22 1 20 1 18 1 16 1 14 1 12 1 10 |
ijklmnopqr |
C. Dori vositalari
Xotira: 64 MB, Vaqt: 1000 msBu vazifada farmatsevt Intizorga yordam berish kerak. U ishlab chiqargan yangi dori vositasini N ta dorixonaga yetkazib berishi lozim.
Intizor N ta flakon (butilka) doriga ega, va i-chi flakonda dastlab ml dori bor.
Ba’zi dorixonalar boshqalarga qaraganda ancha ko‘p dori olmasligi kerak, shuning uchun Intizor ayrim flakonlardan boshqalariga dori quyishga qaror qildi.
Muammo shundaki, bu jarayonda juda aniq ishlash kerak va uni faqat maxsus shprits yordamida bajarish mumkin. Har safar Intizor dorini bir flakondan boshqasiga quyishda aniq K tomchi dori o‘tkazishi kerak (Kam yoki ko‘proq o‘tkazish mumkin emas).
Intizor bu jarayonni istalgancha takrorlashi mumkin va uning maqsadi barcha dorixonalarga deyarli teng miqdorda dori yetkazishdir.
Aniqroq qilib aytganda, eng ko‘p va eng kam miqdorda dori olgan dorixonalar orasidagi maksimal farqni minimal qilish lozim.
Birinchi qatorda ikkita natural son N va K - dorixonalar soni va bir marta o'tkaziladigan dorining miqdori beriladi.
Ikkinchi qatorda N ta natural son - har bir flakondagi dori miqdori kiritiladi.
Yagona qatorda dorixonalar o‘rtasidagi dorining eng katta va eng kichik miqdori orasidagi minimal maksimal farqni chop eting.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
2 1 46 35 |
1 |
2 |
2 2 38 10 |
0 |
3 |
5 5 6 13 1 8 36 |
5 |
D. Massivni tiklash
Xotira: 128 MB, Vaqt: 1000 msDo'stingizda n + 1 ta elementdan tashkil topgan kamaymaydigan s massivi bor edi.
U s massivdan yangi n ta elementdan iborat a massivini hosil qildi.
Endi u sizga a massivini berib, undan s massivni hosil qilishning variantlar sonini so'rayapti.
Birinchi qatorda n natural soni kiritiladi.
Ikkinchi qatorda n ta butun son - a massiv elementlari kiritiladi.
Do'stingiz bergan savolga javob bering.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
3 6 7 9 |
2 |
E. 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.
Ikkinchi qatorda n ta natural son kiritiladi.
Keyingi q ta qatorning har birida l, r va k natural sonlari kiritiladi.
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 |