گروه خونی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

فرض کنید گروه خونی هر انسان، یکی از ۸ حالت زیر را دارد:

OO+AA+BB+ABAB+O^- \quad O^+ \quad A^- \quad A^+ \quad B^- \quad B^+ \quad AB^- \quad AB^+

در واقع به عقیده‌ی زیست شناسان ۳ نوع ماده‌ی AA، BB و ++ وجود دارند که هر کدام از آن‌ها می‌توانند در خون ظاهر شوند یا نشوند. (نیامدن ماده‌ی ++ را با - نشان می‌دهند و نیامدن هیچ‌کدام از AA و BB را با OO نشان می‌دهند.)

توضیح تصویر

می‌دانیم ماده‌های موجود در خون هر فرزند، زیرمجموعه‌ی اجتماع ماده‌های موجود در خون پدر و مادر او است. یعنی برای مثال اگر هیچ کدام از پدر و مادر در خون خود، ماده‌ی AA را نداشته باشند، امکان ندارد در خون فرزند ماده‌ی AA وجود داشته باشد. (برای فهم بهتر مثال‌های نمونه را مطالعه کنید.)

در یک آزمایشگاه tt آزمایش از خانواده‌های مختلف انجام شده و نتیجه‌ی آن گروه خونی پدر، مادر و فرزند را مشخص کرده است. از شما می‌خواهیم برنامه‌ای بنویسید که تشخیص دهد آیا هر کدام از این آزمایش‌ها درست انجام شده یا جواب آن‌ها با توجه به اطلاعات بالا، قابل قبول نیست.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت tt داده می‌شود که تعداد تست‌ها را نشان می‌دهد.

1t5121 \leq t \leq 512

در tt سطر بعدی، در هر سطر سه رشته‌ی dd، mm و cc که با یک فاصله از هم جدا‌شده‌اند داده می‌شود که به ترتیب گروه خونی پدر، مادر و فرزند را نشان می‌دهد.

گروه‌های خونی را با رشته‌های O-، O+، A-، A+، B-، B+، AB- و AB+ نمایش می‌دهیم.

خروجی🔗

خروجی، tt سطر دارد و در هر سطر، در صورت قابل قبول بودن آزمایش، رشته‌ی valid و در غیر این‌صورت invalid را چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

3
AB+ A+ O-
B+ A- AB+
A+ A- B+
Plain text

خروجی نمونه ۱🔗

valid
valid
invalid
Plain text

در آزمایش اول، گروه خونی پدر AB+AB^+، گروه خونی مادر A+A^+ و گروه خونی فرزند OO^- است. کافی است هیچ‌کدام از ماده‌های AA، BB و ++ به فرزند منتقل نشود تا گروه خونی فرزند OO^- شود. پس نتیجه‌ی آزمایش قابل قبول است.

در آزمایش دوم، گروه خونی پدر B+B^+، گروه خونی مادر AA^- و گروه خونی فرزند AB+AB^+ است. کافی است ماده‌های BB و ++ از پدر و ماده‌ی AA از مادر به فرزند منتقل شود تا گروه خونی فرزند AB+AB^+ شود. پس نتیجه‌ی آزمایش قابل قبول است.

در آزمایش سوم، گروه خونی پدر A+A^+، گروه خونی مادر AA^- و گروه خونی فرزند B+B^+ است. فرزند نمی‌تواند ماده‌ی BB در خون خود داشته باشد. (هیچ‌کدام از پدر و مادر این ماده را در خون خود ندارند.) پس نتیجه‌ی این آزمایش قابل قبول نیست.

مامور مخفی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

شهردار سرزمین دوردست، تصمیم به احداث تعدادی ساختمان گرفته است. برای این موضوع nn طرح پیشنهاد داده شده است و هر کدام از آن‌ها به رای‌گیری عمومی گذاشته شده‌اند. در نهایت طرح ii-ام pip_i درصد رای موافق کسب کرده است. می‌دانیم شهردار برای موجه جلوه دادن طرح خود، تعدادی مامور مخفی دارد که به تمامی طرح‌ها رای موافق داده‌اند. همچنین می‌دانیم هرگز فردی که مامور مخفی شهردار نباشد امکان ندارد به تمامی طرح‌ها رای موافق دهد.

مامور مخفی

حال از شما خواسته شده است تا بگویید حداقل و حداکثر چند درصد از مردم شرکت کرده در رای‌گیری، مامور مخفی بوده‌اند.

ورودی🔗

در خط اول عدد nn و در خط دوم مقادیر pip_i با هم فاصله از هم آمده اند. تمامی مقادیر ورودی صحیح هستند.

1n10001 \le n \le 1000 0pi1000 \le p_i \le 100

خروجی🔗

خروجی برنامه‌ی شما باید شامل یک خط باشد که در آن دو عدد خواسته شده، یعنی حداقل و حداکثر درصد ممکن برای مامور مخفی‌ها، با فاصله از هم آمده‌اند.

مثال🔗

در اینجا چند نمونه برای فهم بهتر صورت سوال و قالب ورودی و خروجی تست‌ها داده می‌شود.

ورودی نمونه ۱🔗

3
70 90 85
Plain text

خروجی نمونه ۱🔗

45 70
Plain text

ورودی نمونه ۲🔗

4
30 30 30 30
Plain text

خروجی نمونه ۲🔗

0 30
Plain text

شیر تو شیر


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

روی یک میز، nn ظرف شیر، در یک ردیف پشت هم قرار گرفته‌اند. ظرف‌ها از چپ به راست با اعداد 11 تا nn شماره‌گذاری شده‌اند. می‌دانیم در ابتدا در ظرف iiام aia_i لیتر شیر وجود دارد.

پارسا به ترتیب از سمت راست‌ترین ظرف (ظرف شماره‌ی nn) شروع می‌کند و به سمت چپ‌ترین ظرف (ظرف شماره‌ی 11) می‌رود.

او هر وقت به یک ظرف شیر رسید، شیر موجود در آن را به طور مساوی بین ظرف‌هایی که هنوز به سراغ آن‌ها نرفته پخش می‌کند.

یعنی ابتدا شیر ظرف nnام را به صورت مساوی بین تمام n1n - 1 ظرف دیگر تقسیم می‌کند، سپس به سراغ ظرف n1n - 1ام می‌رود و همین روند را ادامه می‌دهد. وقتی به ظرف 11 می‌رسد، کار تمام می‌شود. (چون ظرفی بعد از آن نیست.) همچنین ظرف‌ها به اندازه‌ی خیلی زیادی ظرفیت دارند و هیچ‌وقت سرریز نمی‌کنند.

توضیح تصویر

اکنون پارسا از شما می‌خواهد که برای هر ظرف، مقدار شیری که در لحظه‌ای که به سراغ آن می‌رود در آن موجود است را محاسبه کنید.

برای درک بهتر فرآیند به ورودی و خروجی نمونه مراجعه کنید.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت nn آمده که تعداد ظرف‌های شیر را نشان می‌دهد.

1n1061 \leq n \leq 10^6

در سطر دوم ورودی، nn عدد صحیح و مثبت a1,a2,,ana_1, a_2, \dots, a_n \, که با یک فاصله از هم جدا شده‌اند آمده که aia_i مقدار اولیه شیر ظرف iiام را نشان می‌دهد.

0ai1060 \leq a_i \leq 10^6

خروجی🔗

در تنها سطر خروجی، nn عدد صحیح ans1,ans2,,ansnans_1, ans_2, \dots, ans_n\, که با یک فاصله از هم جدا شده‌اند را چاپ کنید به‌طوری که ansians_i مقدار شیر موجود در ظرف iiام، در لحظه‌ای که به سراغ آن می‌رویم را نشان می‌دهد.

پاسخ شما زمانی درست در نظر گرفته می‌شود که تا 55 رقم بعد از اعشار دقیق باشد.

مثال‌ها🔗

ورودی نمونه ۱🔗

6
2 1 0 6 0 5
Plain text

خروجی نمونه ۱🔗

14.00000 6.50000 3.66667 7.25000 1.00000 5.00000
Plain text

ورودی نمونه ۲🔗

1
0
Plain text

خروجی نمونه ۲🔗

0.00000
Plain text

کاغذ دیواری


  • محدودیت زمان: ۳ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

دیواری به شکل یک جدول 2×n2 \times n داریم. می‌توانیم این دیوار را به صورت nn ستون در نظر بگیریم که در هر ستون دو ردیف بالا و پایین وجود دارد.

روی دیوار kk پریز برق وجود دارد. هر پریز، کاملاً یکی از واحدهای بالایی یا پایینی یک ستون را اشغال می‌کند.

می‌خواهیم این دیوار را کاغذ دیواری کنیم. هر تکه کاغذ دیواری، به شکل یک مستطیل است و کاغذ دیواری به هر ابعادی را به میزان کافی داریم. کاغذ دیواری‌ها نباید روی پریزها را بپوشانند و همچنین نمی‌خواهیم آن‌ها را پاره کنیم.

می‌خواهیم طوری این کار انجام شود که تعداد کاغذ دیواری‌های مصرفی کمینه شود (دقت کنید ابعاد کاغذ دیواری‌ها اهمیتی ندارد و هدف کمینه کردن تعداد آن‌هاست). از شما می‌خواهیم این تعداد کمینه را محاسبه کنید.

ورودی🔗

در سطر اول ورودی، عدد صحیح tt به شما داده می‌شود که تعداد تست‌های ورودی را نشان می‌دهد. 1t3×1051 \leq t \leq 3 \times 10^5

سپس در سطر اول هر تست، به ترتیب، دو عدد صحیح nn و kk که با یک فاصله از هم جدا شده‌اند آمده است که نشان‌دهنده‌ی تعداد ستون‌های دیوار و تعداد پریزهای روی دیوار هستند.

1n1018,1kmin{2n,3×105}1 \leq n \leq {10}^{18} \quad , \quad 1 \leq k \leq \min\{2n, 3 \times 10^5\}

تضمین می‌شود k\sum k برای همه تست‌ها حداکثر 3×1053 \times 10^5 باشد.

در kk سطر بعدی در هر سطر، کارکتر rir_i که برابر u یا d است و سپس با یک فاصله عدد صحیح cic_i آمده است. این دو عدد، موقعیت پریز iiام را نشان می‌دهند.

ri{u,d}1cinr_i \in \{u, d\} \quad \quad 1 \leq c_i \leq n

تضمین می‌شود هیچ دو پریزی در موقعیت یکسان قرار ندارد.

خروجی🔗

خروجی tt سطر دارد، در هر سطر پاسخ تست متناظر یعنی کمترین تعداد تکه کاغذ دیواری را چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

4
1 1
d 1
4 2
d 3
u 3
1000000000000 0
4 2
u 1
d 4
Plain text

خروجی نمونه ۱🔗

1
2
1
2
Plain text

ورودی نمونه ۲🔗

1
2 1
u 2
Plain text

خروجی نمونه ۲🔗

2
Plain text

موج مکزیکی


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

در یک استادیوم فوتبال، nn نفر تماشاچی در یک ردیف قرار دارند. تماشاچیان را از چپ به راست با اعداد 11 تا nn شماره گذاری می‌کنیم. در یک لحظه‌ی خاص از این افراد عکسی گرفته شده است. در این تصویر هر کدام از این افراد نشسته یا ایستاده‌اند.

به یک دنباله از افراد «موج مکزیکی» می‌گوییم اگر عدد صحیحی مثل kk موجود باشد به طوری که:

  • تعداد افراد ضریبی از 2k2k باشد.
  • kk نفر اول نشسته، kk نفر بعدی ایستاده، kk نفر بعدی نشسته، و ... باشند، یا kk نفر اول ایستاده، kk نفر بعدی نشسته، kk نفر بعدی ایستاده، و ... باشند.

موج مکزیکی

از شما می‌خواهیم بزرگ‌ترین زیردنباله‌ای از افراد حاضر در استادیوم را پیدا کنید که تشکیل موج مکزیکی می‌دهند. توجه کنید منظور از یک زیردنباله، در نظر گرفتن زیرمجموعه‌ای از افراد با حفظ ترتیب آن‌ها است و لزومی ندارد این افراد یک بازه‌ی متوالی باشند.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت tt آمده که تعداد تست‌ها را نشان می‌دهد. 1t1051 \leq t \leq 10^5

در سطر اول هر تست، عدد صحیح و مثبت nn آمده که نشان‌دهنده‌ی تعداد افراد در این تصویر است. 1n1061 \leq n \leq 10^6

در سطر دوم هر تست، یک رشته به طول nn از حروف U (ایستاده) و D (نشسته) داده می‌شود.

تضمین می‌شود n\sum n به ازای همه‌ی tt تست حداکثر 10610^6 است.

خروجی🔗

خروجی tt سطر دارد، در هر سطر بیشترین طول ممکن برای یک زیر دنباله‌ی موج مکزیکی چاپ کنید.

مثال🔗

ورودی نمونه ۱🔗

4
5
UUUUU
6
UDUUDD
6
DDDUUU
14
DUDUDDDUUUDUDU
Plain text

خروجی نمونه ۱🔗

0
4
6
10
Plain text

نوار مش‌رجب


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

مش‌رجب برای تولد ۶ سالگی خود یک نوار به طول nn هدیه گرفته است که در هر کدام از خانه‌های آن یک عدد مثبت نوشته شده است.

توضیح تصویر

در ابتدا تمامی خانه‌های این نوار آبی هستند. از آنجایی که مش‌رجب رنگ آبی را دوست ندارد، می‌خواهیم خانه‌های این نوار را برای او قرمز کنیم. می‌دانیم از نظر مش‌رجب میزان زیبایی یک بازه از نوار برابر با مجموع اعداد خانه‌های قرمز منهای اعداد خانه‌های آبی آن بازه است. همینطور میزان علاقه مش‌رجب به نوار برابر با بیشینه میزان زیبایی در میان تمام بازه‌های آن است.

می‌خواهیم یک به یک خانه‌های آبی را قرمز کنیم تا در نهایت تمام خانه‌ها قرمز شوند. از آنجا که مش‌رجب هنوز به مدرسه نرفته است و محاسبه حاصل جمع و تفریق کمی برایش سخت است، از شما می‌خواهیم که بگویید پس از قرمز شدن هر خانه، میزان علاقه مش‌رجب به نوار در آن لحظه چقدر است.

ورودی🔗

در خط اول ورودی عدد nn آمده است. در خط دوم nn عدد آمده است که عدد ii-ام آن‌‌‌‌ aia_i یا همان عدد خانه ii-ام ست. در خط سوم nn عدد آمده است که ترتیب قرمز شدن خانه‌ها را نمایش می‌دهد، اعداد این خط یک جایگشت از اعداد ۱ تا nn هستند.

1n1051 \le n \le 10^5

1ai1091 \le a_i \le 10^9

خروجی🔗

در تنها خط خروجی باید nn عدد چاپ کنید که عدد ii-ام نشان می‌دهد میزان علاقه مش‌رجب به نوار بعد از مرحله ii-ام چقدر است.

مثال🔗

ورودی نمونه ۱🔗

4
7 4 6 10
3 1 2 4
Plain text

خروجی نمونه ۱🔗

6 9 17 27 
Plain text

بعد از قرمز شدن خانه سوم نوار، زیبا‌ترین بازه از نظر مش‌رجب بازه‌ی [۳,۳] است و زیبایی ۶ دارد. وقتی خانه اول نیز قرمز می‌شود، زیباترین بازه از نظر مش‌رجب بازه [۱,۳] است که زیبایی ۹ دارد.

ورودی نمونه ۲🔗

10
4 2 7 6 4 2 6 3 1 7
8 3 1 6 2 7 10 4 5 9
Plain text

خروجی نمونه ۲🔗

3 7 9 9 13 14 20 32 40 42 
Plain text

ورودی نمونه ۳🔗

10
75 98 33 45 27 57 91 54 42 59 
8 6 5 9 1 2 7 10 3 4 
Plain text

خروجی نمونه ۳🔗

54 57 84 96 96 184 366 425 491 581 
Plain text

عملیات سری کا. گ. ب.


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

سازمان اطلاعاتی KGB به دنبال پیشبرد عملیاتی سری است. متاسفانه این سازمان تعدادی از عوامل شریف کوئرا را گروگان گرفته است و تاکید کرده تنها در صورتی آن‌ها را آزاد می‌کند که مسئله‌ای که فرستاده‌اند برای آن‌ها حل شود. نکته‌ی هولناک ماجرا این است که سازمان به ازای هر باری که پاسخ نادرستی برای این مسئله ارسال شود، عضو جدیدی از بدن یکی از عوامل تحت گروگان را قطع و از طریق پست برای کوئرا ارسال می‌کند. متن نامه‌ای که سوال در آن آمده است و ترجمه آن بدون دخل و تصرفی در ادامه آمده است.

KGB

کوئرای عزیز،

به یک درخت ریشه‌دار، درخت دودویی می‌گوییم اگر و تنها اگر هر راس آن دقیقا ۰ یا ۲ بچه (یک بچه‌ی چپ و یک بچه‌ی راست) داشته باشد.

به یک درخت ریشه‌دار، درخت دودویی کامل می‌گوییم اگر و تنها اگر دودویی باشد و ارتفاع تمامی برگ‌ها در آن برابر باشد.

به یک درخت ریشه دار، درخت جستجوی دودویی کامل می‌گوییم اگر و تنها اگر درخت دودویی کامل باشد و به ازای هر راس مانند vv تمامی راس‌های واقع در زیردرخت چپ vv کوچکتر از vv، و تمامی راس‌های واقع در زیر درخت راست vv بزرگتر از vv باشند.

حال یک درخت به شما داده شده و ریشه آن مشخص شده است، باید بگویید اندازه بزرگترین زیرمجموعه از راس‌های آن، به طوری که همبند باشند و تشکیل یک زیردرخت به شکل درخت جستجوی دودویی کامل بدهد را چاپ کنید. دقت کنید رابطه پدر فرزندی راس‌ها در درخت اولیه و زیردرخت انتخابی حفظ می‌شوند، به عبارت دیگر ریشه‌ی زیردرخت انتخابی حتما بالاترین راس آن خواهد بود.

با احترام، کا. گ. ب.

letter

ورودی🔗

در خط اول ورودی دو عدد nn و ریشه‌ی درخت داده شده است.

در n1n-1 خط بعدی، یال‌های درخت داده شده اند.

1n5×1051 \le n \le 5 \times 10^5

خروجی🔗

در تنها خط خروجی، باید اندازه بزرگترین زیر‌درخت جستجوی دودویی ممکن چاپ شود.

مثال🔗

ورودی نمونه ۱🔗

1 1
Plain text

خروجی نمونه ۱🔗

1
Plain text

ورودی نمونه ۲🔗

3 2
1 2
2 3
Plain text

خروجی نمونه ۲🔗

3
Plain text

ورودی نمونه ۳🔗

9 5
5 3
5 7
5 8
3 1
3 4
7 2
7 6
7 9
Plain text

خروجی نمونه ۳🔗

7
Plain text

ورودی نمونه ۴🔗

15 8
8 4
8 12
4 2
2 1
2 3
4 6
6 5
6 7
12 10
10 9
10 11
12 14
14 13
14 15
Plain text

خروجی نمونه ۴🔗

15
Plain text