تکرار کدکاپی


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

علی عاشق کدکاپ شده و نمی‌خواهد بپذیرد که هر مسابقه‌ای یک پایانی دارد! به همین دلیل می‌خواهد رشته بی‌پایان ss را در کدکاپ ۶ به‌عنوان یادگاری باقی بگذارد.

توضیح تصویر

رشته ss یک رشته (از سمت راست) نامتناهی است که از نامتناهی بار اضافه کردن codecup6 به سمت راست یک رشته خالی بدست می‌آید:

کاراکتر اول این رشته یعنی s1s_1 برابر c، کاراکتر دوم این رشته یعنی s2s_2 برابر o، کاراکتر سوم این رشته یعنی s3s_3 برابر d و... است.

امین که رابطه خوبی با نامتناهی‌ها ندارد عدد صحیح و مثبت nn را به علی می‌دهد و مقدار sns_n را از او می‌پرسد. به علی کمک کنید تا به سوال امین پاسخ دهد.

ورودی🔗

ورودی تنها شامل یک سطر است و در آن عدد صحیح و مثبت nn آمده است. 1n1001 \le n \le 100

خروجی🔗

در تنها سطر خروجی مقدار sns_n که تنها یک کاراکتر است را چاپ کنید.

توجه کنید سیستم داوری به کوچکی و بزرگی حروف حساس است.

مثال🔗

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

1
Plain text

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

c
Plain text
توضیح نمونه ۱. مقدار s1s_1 برابر c است.
codecup6codecup6codecup6...
Plain text

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

2
Plain text

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

o
Plain text
توضیح نمونه ۲. مقدار s2s_2 برابر o است.
codecup6codecup6codecup6...
Plain text

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

8
Plain text

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

6
Plain text
توضیح نمونه ۳. مقدار s8s_8 برابر 6 است.
codecup6codecup6codecup6...
Plain text

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

9
Plain text

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

c
Plain text
توضیح نمونه ۴. مقدار s9s_9 برابر c است.
codecup6codecup6codecup6...
Plain text

دَنگ و دُنگ


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

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

برای اینکه این حساب و کتابشان را راحت انجام دهند همیشه یکی از این افراد «مادرخرج» می‌شود؛ یعنی کل هزینه‌ها را به رستوران می‌دهد و فردای آن روز n1n - 1 نفر دیگر خرج آن روز را برای «مادرخرج» واریز می‌کنند.

اگر فرض کنید کل خرج رستوران SS تومان باشد. سهم هر کس دقیقاً Sn\frac{S}{n} تومان می‌شود. پس باید هرکس به جز «مادرخرج» مبلغ Sn\frac{S}{n} به حساب «مادرخرج» واریز کند تا حساب‌ها درست شود.

اما می‌دانیم انجام یک واریز و انتقال پول هزینه‌ای برای ارسال کننده دارد. در این سوال فرض کنید aa تومان از حساب واریزکننده بابت کارمزد این واریز کسر خواهد شد.

توضیح تصویر

این موضوع باعث می‌شود که «مادرخرج» در مجموع هزینه کمتری را پرداخت کند! (چون aa تومان کمتر از بقیه پرداخت کرده است.)

از شما می‌خواهیم بگویید هر کس (به جز «مادرخرج») چقدر به حساب «مادرخرج» واریز کند تا پول خرج شده توسط همه این nn نفر یکسان باشد و یا بگویید انجام چنین کاری امکان پذیر نیست. (فرض کنید همه این nn نفر به اندازه کافی پول در حساب‌هایشان دارند.)

توجه کنید هرکس به جز «مادرخارج» دقیقاً یک انتقال پول با مبلغی صحیح و مثبت به حساب «مادرخرج» انجام می‌دهد و هیچ انتقال پول دیگری بین حساب این nn نفر مجاز نیست.

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

برای بهتر متوجه شدن خواسته سوال توضیحات نمونه را مطالعه کنید.

ورودی🔗

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

1t1001 \le t \le 100

سپس در tt سطر بعدی در هر سطر سه عدد صحیح و مثبت nn و SS و aa داده می‌شود که به ترتیب نشان‌دهنده تعداد افراد، مجموع هزینه‌های رستوران و هزینه انجام یک تراکنش برای ارسال کننده است. 2n1001a10001S100 0002 \le n \le 100 \quad \quad 1 \le a \le 1000 \quad \quad 1 \le S \le 100 \ 000

توجه کنید این tt نمونه هیچ ارتباطی به هم ندارند و هر کدام مسئله‌ای مستقل هستند.

خروجی🔗

خروجی شامل tt سطر است و در هر سطر پاسخ یک نمونه چاپ می‌شود. درصورتی که عدد صحیح و مثبتی مثل xx وجود دارد که اگر هرکس به جز «مادرخرج»، xx تومان برای مادرخرج واریز کند، مقدار پول کسر شده از حساب همه یکسان خواهد بود، مقدار xx و اگر چنین عدد صحیحی وجود ندارد -1 را چاپ کنید.

مثال🔗

ورودی نمونه🔗

5
3 2000 5
2 201 1
5 30 1
2 100 100
3 3 100
Plain text

خروجی نمونه🔗

665
100
-1
-1
-1
Plain text
توضیح نمونه اول

ابتدا از حساب «مادرخرج» ۲۰۰۰ تومان کسر شده‌است، سپس توسط دو نفر دیگر هر کدام ۶۶۵ تومان به حساب مادرخرج واریز شده است. پس در مجموع کل مبلغ پرداخت شده توسط «مادرخرج» برابر است با: 20002×665=6702000 - 2 \times 665 = 670

بقیه افراد هر کدام نفری ۶۶۵ تومان به حساب «مادرخرج» واریز می‌کنند و ۵ تومان هم کارمزد این واریز را پرداخت می‌کنند پس مجموع پرداختی این افراد برابر است با: 665+5=670665 + 5 = 670 و این عادلانه است چون در مجموع از حساب همه افراد، ۶۷۰ تومان کسر شده‌است.

توضیح نمونه دوم

ابتدا از حساب «مادرخرج» ۲۰۱ تومان کسر شده‌است، سپس توسط فرد دیگر ۱۰۰ تومان به حساب «مادرخرج» واریز شده‌است. پس در مجموع کل مبلغ پرداخت شده توسط «مادرخرج» برابر است با: 201100=101201 - 100 = 101

فرد دیگر ۱۰۰ تومان به حساب «مادرخرج» واریز می‌کند و ۱ تومان هم کارمزد این واریز را پرداخت می‌کند پس مجموع پرداختی این فرد برابر است با: 100+1=101100 + 1 = 101 و این عادلانه است چون در مجموع از حساب همه افراد، ۱۰۱ تومان کسر شده‌است.

توضیح نمونه سوم

هیچ مبلغ صحیح و مثبتی نمی‌توان برای انجام تراکنش انتخاب کرد.

ابتدا از حساب «مادرخرج» ۳۰ تومان کسر شده است. اگر هر فرد به جز مادر خرج مبلغ ۶ تومان به حساب «مادرخرج» واریز کند. مجموع کل مبلغ پرداخت شده توسط مادر خرج برابر است با: 304×6=630 - 4 \times 6 = 6 بقیه افراد هر کدام نفری ۶ تومان به حساب «مادرخرج» واریز می‌کنند و ۱ تومان هم کارمزد این واریز را پرداخت می‌کنند پس مجموع پرداختی این افراد برابر است با: 6+1=76 + 1 = 7 و این عادلانه نیست چون در مجموع از حساب مادر خرج ۶ تومان کسر شده‌ ولی از حساب بقیه ۷ تومان کسر می‌شود.

با استدلال‌های مشابه می‌توانید نتیجه بگیرید که هیچ عدد صحیح و مثبتی برای تسویه حساب به صورت عادلانه وجود ندارد. پس به جای پاسخ مسئله -1 چاپ می‌کنیم.

توضیح نمونه چهارم

اگر فرد به غیر از «مادرخرج» هر مبلغ صحیح و مثبتی به حساب «مادرخرج» واریز کند مجموع پول کسر شده از حساب مادرخرج کمتر از ۱۰۰ تومان و فرد دیگر بیشتر از ۱۰۰ تومان خواهد بود. پس هیچ روشی برای تسویه حساب عادلانه وجود ندارد. پس به جای پاسخ مسئله -1 چاپ می‌کنیم.

توضیح نمونه پنجم

در این نمونه هزینه کارمزد انتقال زیاد است و چون انتقال با مبلغ منفی نداریم (!) هیچ روشی برای تسویه حساب عادلانه نداریم. پس به جای پاسخ مسئله برابر -1 چاپ می‌کنیم.

هگزانوردی


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

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

توضیح تصویر

علی در خانه مانده و حوصله‌اش خیلی سررفته و می‌خواهد در شهر گشتی بزند. گشت زدن علی nn مرحله دارد. علی در هر مرحله یکی از ۶ جهت که با حروف {A,B,C,D,E,F}\{ A, B, C, D, E, F \} در شکل نشان‌داده‌ایم را انتخاب می‌کند و از محل تقاطع فعلی در آن جهت حرکت می‌کند تا به تقاطع بعدی برسد.

توضیح تصویر

پس یک گشت علی را می‌توان به صورت یک رشته به طول nn مثل:s1,s2,s3,,sns_1, s_2, s_3, \dots, s_n نشان داد به طوری که برای هر ii از ۱ تا nn: si{A,B,C,D,E,F}s_i \in \{A, B, C, D, E, F\}

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

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

ورودی🔗

در سطر اول ورودی عدد صحیح و مثبت tt آمده است. که نشان‌دهنده‌ی تعداد گشت‌هایی است که در این ورودی آمده است. 1t1000001 \le t \le 1 \, 00 \, 000 در tt سطر بعدی، در هر سطر یک رشته که تنها شامل حروف {A,B,C,D,E,F}\{ A, B, C, D, E, F \} است آمده که نشان‌دهنده یک گشت علی است.

تضمین می‌شود مجموع طول رشته‌ها در یک ورودی از ۱۰۰,۰۰۰ بیشتر نشود.

خروجی🔗

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

مثال🔗

ورودی نمونه🔗

3
A
AB
ABC
Plain text

خروجی نمونه🔗

1
2
2
Plain text

شکل حرکت علی در گشت اول. توضیح تصویر

شکل حرکت علی در گشت دوم. توضیح تصویر

شکل حرکت علی در گشت سوم. توضیح تصویر

دنباله گمشده


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

یک دنباله از اعداد صحیح a1,a2,a3,,ana_1, a_2, a_3, \dots, a_n \, و دو عدد صحیح و مثبت kk و mm داریم (1kn1 \le k \le n \,) و از روی آن دنباله bb را می‌سازیم.

ابتدا دنباله bb خالی است و به‌عنوان اولین عنصر این دنباله aka_k را در آن قرار می‌دهیم. سپس تا زمانی که تعداد اعداد موجود در دنباله bb برابر mm نشده است، اگر سمت راست ترین عددی که به دنباله bb اضافه کردیم برابر aia_i بوده است عدد ai%n+1a_{i \% n + 1} را به سمت راست دنباله bb اضافه می‌کنیم.

برای مثال فرض کنید دنباله aa برابر 1,12,7,41, 12, 7, -4

و m=9m = 9 و k=3k = 3 باشد، دنباله bb در نهایت برابر b=7,4,1,12,7,4,1,12,7b = 7, -4, 1, 12, 7, -4, 1, 12, 7 خواهد بود.

حال دنباله aa و مقدار kk گمشده است و فقط مقدار mm و دنباله نهایی bb را داریم. از شما می‌خواهیم کمترین طول ممکن برای دنباله aa که بشود با انتخاب یک kk مناسب به این دنباله bb رسید را بیاید و دنباله aa را پیدا کنید.

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

ورودی🔗

در سطر اول ورودی عدد صحیح و مثبت tt آمده که تعداد تست‌های نمونه‌ای که به شما داده می‌شود را نشان می‌دهد. سپس برای هر تست در یک سطر عدد صحیح mm، در سطر بعدی mm عدد صحیح b1,b2,b3,,bmb_1, b_2, b_3, \dots, b_m \, که با فاصله از هم جدا شده‌اند، آمده است.

1m1000001 \le m \le 100\,000 bi109|b_i| \le 10^9

تضمین می‌شود مجموع mm برای همه دنباله‌هایی که در این tt تست به شما داده می‌شود از ۱۰۰,۰۰۰ بیشتر نمی‌شود.

خروجی🔗

برای هر کدام از این tt تست در یک سطر کمترین طول ممکن برای دنباله aa و در سطر بعدی دنباله aaای با همان طول که اعضای آن با فاصله جدا شده است را چاپ کنید.

اگر چندین جواب برای یک مسئله وجود دارد یکی را به دلخواه چاپ کنید.

مثال🔗

ورودی نمونه🔗

3
9
7 -4 1 12 7 -4 1 12 7
6
3 1 2 3 1 2
5
1 2 3 4 5
Plain text

خروجی نمونه🔗

4
1 12 7 -4
3
1 2 3
5
1 2 3 4 5
Plain text

توضیح نمونه اول.

توضیح این نمونه در متن سوال آمده است.

توضیح نمونه دوم.

کافی است دنباله aa را به صورت <1,2,3><1, 2, 3> و مقدار k=3k = 3 باشد تا دنباله ورودی داده شده ساخته شود.

توضیح نمونه سوم.

کافی است دنباله aa را به صورت <1,2,3,4,5><1, 2, 3, 4, 5> و مقدار k=1k = 1 باشد تا دنباله ورودی داده شده ساخته شود.

پرش با دنباله


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

مارچلو که از سپری کردن تابستان خود در یک مسافرت رویایی داشت نهایت لذت را می‌برد، تصمیم گرفت که ورزشی را به طور حرفه‌ای شروع کند و چه ورزشی بهتر از پرش با دنباله!

مارچلو دو دنباله‌ی nn تایی از اعداد صحیح دارد که عضو iiاُم دو دنباله را به ترتیب با aia_i و bib_i نشان می‌دهیم. او می‌خواهد ابتدا دنباله‌ی پرش‌های خود را بدست بیاورد و سپس اقدام به پرش کند.

دنباله‌ی <d1,d2,...,dk><d_{1},\,d_{2},\,...,\,d_{k}> را یک دنباله‌ی پرش می‌گوییم، اگر:

  • knk \le n
  • 1din1 \le d_i \le n
  • i<jdidj\forall_{i<j}\,d_{i}\neq d_{j}

به دنباله‌ی پرش <d1,d2,...,dk><d_{1},\,d_{2},\,...,\,d_{k}> یک دنباله‌ی پرش معتبر می‌گوییم، اگر:

  • adiadi+1a_{d_i} \le a_{d_{i+1}}
  • adiadi+1bdibdi+1\left|a_{d_{i}}-a_{d_{i+1}}\right|\leq\left|b_{d_{i}}-b_{d_{i+1}}\right|

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

ورودی🔗

ورودی شامل سه خط است که در خط اول، عدد طبیعی nn آمده است و در خط دوم nn عدد با فاصله از هم آمده است که عدد iiاُم نشان‌دهنده‌ی aia_i است. در خط سوم نیز nn عدد با فاصله از هم آمده است که عدد iiاُم، نشان‌دهنده‌ی bib_i است. 1n100 0001 \le n \le 100\ 000 1ai,bi100 0001 \le a_i, b_i \le 100\ 000 تضمین می‌شود aia_iها متمایز هستند.

خروجی🔗

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

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

3
2 1 3
4 5 9
Plain text

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

3
Plain text

دنباله‌ی <2,1,3><2,\,1,\,3> بلندترین دنباله‌ی پرش معتبر است.

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

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

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

4
Plain text

دنباله‌ی <2,4,1,3><2,\,4,\,1,\,3> بلندترین دنباله‌ی پرش معتبر است.

حروف چینی


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

امین می‌خواهد در یک امتحان شرکت کند او nn کلمه مختلف را باید حفظ کند این کلمات همگی به طول kk هستند. امین که آدم تنبلی است به جای حفظ کردن این کلمات تصمیم به یادداشت کردن آن‌ها و تقلب دارد.

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

توجه کنید ترتیب ظاهر شدن کلمه‌ها دور دایره اهمیتی ندارد و می‌توانند به هر ترتیبی ظاهر شوند اما این nn کلمه لزوماً متمایز نیستند و اگر یک کلمه mm بار در ورودی ظاهر شود باید دور دایره نیز دقیقاً mm بار دیده شود.

به امین کمک کنید تا این ترتیب از کاراکتر را بدست آورد. اگر چند ترتیب وجود دارد یکی از آن‌ها را به دلخواه چاپ کنید. همچنین اگر انجام چنین کاری ممکن نیست این خبر بد را با چاپ کردن -1 مشخص کنید.

ورودی🔗

در خط اول ورودی به شما دو عدد صحیح nn و kk داده می‌شود. در nn خط بعدی هر کدام یک رشته به طول kk داده می‌شود. همگی این رشته ها از حروف کوچک انگلیسی تشکیل شده‌اند.

1n×k500000 1 \le n \times k \le 500 \, 000

خروجی🔗

در تنها سطر خروجی یک رشته به طول nn که پاسخ مسئله است را چاپ کنید. ترتیب رشته از چپ به راست ساعتگرد است. اگر پاسخی برای مسئله وجود ندارد در تنها سطر خروجی -1 را چاپ کنید.

مثال🔗

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

3 3
abc
bca
cab
Plain text

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

abc
Plain text

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

4 2
aa
ab
ba
bb
Plain text

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

aabb
Plain text

زیردرخت یابی


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

گراف GG یک گراف ساده و بدون جهت است. GG شامل nn راس و mm یال است. فرض کنید یال‌های GG به ترتیب ورودی مسئله

e1,e2,e3,,eme_1, e_2, e_3, \dots, e_m

باشند.

از شما می‌خواهیم برای qq بازه lil_i و rir_i بررسی کنید آیا اجتماع یال‌های این بازه تشکیل یک زیردرخت برای GG می‌دهد یا نه. به عبارت دیگر اجتماع eli,eli+1,eli+2,,erie_{l_i}, e_{l_i + 1}, e_{l_i + 2}, \dots, e_{r_i} تشکیل یک زیردرخت برای GG می‌دهد یا نه.

توجه کنید یک زیردرخت از GG یک زیرمجموعه از یال‌های GG است که تشکیل یک گراف همبند بدون دور را بدهد. (نیازی نیست که این زیردرخت فراگیر باشد و شامل همه راس‌های GG باشد.)

ورودی🔗

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

2n1000001m1000002 \le n \le 100 \, 000 \quad\quad 1 \le m \le 100 \, 000

در mm سطر بعدی در هر سطر دو عدد صحیح و مثبت uiu_i و viv_i با یک فاصله آمده است که نشان‌دهنده‌ی یال iiام گراف یعنی eie_i است.

1uivin1 \le u_i \neq v_i \le n

تضمین می‌شود هیچ یالی دوبار ورودی داده نمی‌شود و گراف داده شده در ورودی یک گراف ساده (نه لزوماً همبند) خواهد بود.

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

1q1000001 \le q \le 100 \, 000

در qq سطر بعدی در هر سطر دو عدد صحیح و مثبت lil_i و rir_i آمده است که بازه مورد نظر در سوال iiام را نشان می‌دهد.

1lirim1 \le l_i \le r_i \le m

خروجی🔗

خروجی شامل qq سطر است و در سطر iiام آن اگر زیرگراف متناظر با بازه‌ی iiام مورد سوال، درخت بود کلمه YES و در غیر این صورت کلمه NO را چاپ کنید.

مثال🔗

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

3 3
1 2
1 3
2 3
6
1 1
1 2
1 3
2 2
2 3
3 3
Plain text

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

YES
YES
NO
YES
YES
YES
Plain text

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

5 5
1 2
3 4
2 3
4 5
5 1
4
1 2
1 3
1 4
1 5
Plain text

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

NO
YES
YES
NO
Plain text