زورو سرور می‌خرد


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

مدتی است که زورو به فکر خرید سرور است. زورو پس از بررسی‌های بسیار nn سرور مناسب پیدا کرده است که سرور iiام CiC_i هسته دارد که هر کدام فرکانس FiF_i دارد. قیمت سرور iiام نیز ViV_i است. لازم به ذکر است که هسته‌های یک سرور از یک‌دیگر مستقل‌اند و می‌توانند کارهای متفاوتی را انجام دهند.

زورو که به فکر کسب و کار است ، با جست و جوی فراوان mm مشتری پیدا می‌کند. مشتری iiام حاظر است که viv_i واحد پول به زورو بدهد به شرطی که زورو cic_i هسته از سرور (های)ش را که هر کدام حداقل فرکانس fif_i داشته باشد را به او اجاره دهد. لازم به ذکر است که هر هسته را می‌توان به حداکثر یک نفر اجاره داد.

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

ورودی🔗

در خط اول ورودی nn ، تعداد سرورهای موجود برای خرید آمده است.

در هر یک از nn خط بعدی سه عدد CiC_i ، FiF_i و ViV_i آمده است که نشان‌دهنده مشخصات سرور iiام است.

در خط بعدی ورودی mm ، تعداد مشتری های زورو آمده است.

در هر یک از mm خط بعدی سه عدد cic_i ، fif_i و viv_i آمده است که نشان دهنده ی مشخصات مشتری iiام است.

1n,m2 0001 \le n, m \le 2\ 0001Ci,ci501 \le C_i, c_i \le 50 1Fi,fi1091 \le F_i, f_i \le 10^9 1Vi,vi1091 \le V_i, v_i \le 10^9

خروجی🔗

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

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۱۸ n15n \le 15
۲ ۱۸ m15m \le 15
۳ ۱۸ n,m250,Ci=ci=1n, m \le 250, C_i = c_i = 1
۴ ۱۸ Fi=fi=1F_i = f_i = 1
۵ ۱۸ Vi=vi=1V_i = v_i = 1
۶ ۱۰ بدون محدودیت اضافی

مثال🔗

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

4
4 2200 700
2 1800 10
20 2550 9999
4 2000 750
3
1 1500 300
6 1900 1500
3 2400 4550
Plain text

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

350
Plain text

جمع همه‌ی زیربازه‌ها


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

برنامه‌ای بنویسید که عدد nn و سپس یک دنباله nn-تایی a1,a2,a3,...,ana_1, a_2, a_3, ..., a_n را از ورودی بخواند و سپس مقدار زیر را چاپ کند:

1lrnf(l,r)\sum_{1 \le l \le r \le n} f(l, r)

که f(l,r)f(l, r) را این‌گونه تعریف می‌کنیم:

f(l,r)=i=lraif(l, r) = \sum _{i = l} ^ r a_i

ورودی🔗

در سطر اول ورودی یک عدد nn آمده است و در سطر دوم nn عدد طبیعی آمده است که عدد ii-ام نمایان‌گر aia_i است.

1n500 0001 \le n \le 500\ 000

1ai101 \le a_i \le 10

دقت کنید که این سوال دارای زیرمسئله می‌باشد.

خروجی🔗

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

زیرمسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۲۰ n100n \le 100
۲ ۳۰ n4 000n \le 4\ 000
۳ ۵۰ بدون محدودیت اضافی

مثال🔗

ورودی نمونه🔗

3
1 2 3
Plain text

خروجی نمونه🔗

20
Plain text

f(1,1)=1,f(1,2)=3,f(1,3)=6,f(2,2)=2,f(2,3)=5,f(3,3)=3f(1, 1) = 1 , f(1, 2) = 3, f(1, 3) = 6, f(2, 2) = 2, f(2, 3) = 5, f(3, 3) = 3

ans=1+3+6+2+5+3=20\rightarrow ans = 1 + 3 + 6 + 2 + 5 + 3 = 20

تیم‌بندی کج


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

افراد ۱ تا nn تیم‌بندی شده‌اند و در یک صف قرار گرفته‌اند. به یک شیوه تیم بندی یک دنباله a1,a2,...,ana_1,a_2,...,a_n نسبت میدهیم به این شکل که به ترتیب عناصر دنباله را میسازیم:

  • در مرحله ii ام اگر فرد با شماره ii با فرد شماره jj هم‌تیمی بود به شکلی که i>ji>j aia_i را برابر aja_j قرار میدهیم.
  • در غیر این صورت aia_i را برابر مینیمم عدد طبیعی مانند xx قرار می‌دهیم که xx برابر هیچ کدام از اعداد a1,a2,...,ai1a_1,a_2,...,a_{i-1} نباشد.

یک دنباله a1,a2,...,ana_1,a_2,...,a_n به شما داده شده است که تضمین می‌شود تیم‌بندی‌ای وجود داره که دنباله‌اش برابر آن شود. تعداد تیم‌بندی‌‌هایی را بشمارید که دنباله‌هایشان از لحاظ لکسیکوگرافیکالی کمتر یا برابر دنباله aa باشد. چون ممکن است این عدد خیلی بزرگ باشد، باقی‌مانده آن را به 1 000 0071\ 000\ 007 حساب کنید.

ورودی🔗

در خط اول ورودی یک عدد nn داده شده است. در خط دوم دنباله a1,a2,...,ana_1,a_2,...,a_n داده شده است. 1n10 0001 \leq n \leq 10\ 000

خروجی🔗

باقی‌مانده تعداد تیم‌بندی‌های با شرایط گفته شده بر 1 000 0071\ 000\ 007 را در یک خط چاپ کنید.

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۳۰ n14n \le 14
۲ ۲۰ n100n \le 100
۳ ۲۰ n1 000n \le 1\ 000
۴ ۳۰ بدون محدودیت اضافی

مثال🔗

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

3
1 2 2
Plain text

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

4
Plain text

دنباله‌های معتبر:

  • 1111 1 1
  • 1121 1 2
  • 1211 2 1
  • 1221 2 2
  • 1231 2 3

علی آقا؟!


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

شنگدباو (shengdebao) معلم یک مهد کودک شده است!‌ هر کدام از بچه‌های این مهد قدرتی دارد،‌ به طور دقیق‌تر قدرت کودک iiام برابر aia_i است.

معضلی که در بین بچه‌ها الان وجود دارد این است که می‌خواهند دو تیم تشکیل بدهند و با هم به بازی «کتک کاری»‌ مشغول شوند! ممکن است تعدادی از بچه‌ها در این بازی شرکت نکنند اما یک نکته که خیلی مورد توجه است این است که اگر قرار باشد تعدادی از بچه ها در تیم اول و تعدادی در تیم دوم باشند جمع قدرت بچه های تیم اول و تیم دوم با هم به پیمانه ی mm برابر باشند.

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

ورودی🔗

در اولین سطر ابتدا nn و سپس mm آمده است. که nn تعداد بچه ها است.

در سطر بعدی nn عدد داده شده است که با فاصله جدا شده است. iiامین عدد aia_i است.

1n1 000 0001 \le n \le 1\ 000\ 000 1m1091 \le m \le 10 ^ 9 0ai<m0 \le a_i < m

خروجی🔗

اگر روشی برای انجام این کار نبود خروجی دهید: laelahaellallah

در غیر اینصورت ابتدا خروجی دهید alhamdolellah و در سطر بعدی nn عدد خروجی دهید که هر کدام برابر 00 یا 11 یا 22 است.

اگر 00 بود یعنی کودک در هیج تیمی نیامده است و اگر 11 بود یعنی در تیم اول و اگر 22 بود یعنی در تیم دوم آمده است.

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

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۱۰ m1 000m \le 1\ 000
۲ ۶ n16n \le 16
۳ ۹ n20n \le 20
۴ ۳۵ m1 000 000m \le 1\ 000\ 000
۵ ۴۰ بدون محدودیت اضافی

مثال🔗

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

4 1000 
1 4 3 2
Plain text

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

alhamdolellah
1 0 2 1
Plain text

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

4 5 
0 1 2 3
Plain text

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

alhamdolellah
2 0 1 1
Plain text

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

3 10000 
1 10 100 
Plain text

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

laelahaellallah
Plain text

دو صفر هفت


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

تیزی و کسری روی یک گراف همبند بازی میکنند. هر کدام از آنها روی یکی از راس های گراف قرار گرفته‌اند.

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

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

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

اما کسری خوابش می‌آید و میخواهد بیشتر بخوابد.

او میخواهد آنقدر بخوابد تا بعد از بیدار شدن همچنان مطمئن باشد میتواند از تیزی ببرد. بیشترین تعداد ثانیه‌ای که کسری میتواند به جای بازی کردن بخوابد را پیدا کنید.

دقت کنید که کسری در زمانی که خواب است حتی اگر با تیزی در یک راس قرار بگیرد برنده نمیشود.

ورودی🔗

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

در خط بعدی ۴ عدد kk و tt و aa و bb به شما داده میشود که tt شماره راس ابتدایی تیزی است و kk شماره راس ابتدایی کسری. aa و bb شماره راس های دو سرور هستند.

در هر یک از mm خط بعدی دو عدد vv و uu به شما داده میشود که نشان دهنده ی یک یال بین vv و uu است.

4n200 0004 \leq n \leq 200\ 000 3m600 0003 \leq m \leq 600\ 000 1t,k,a,b,v,un1\leq t,k,a,b,v,u \leq n

خروجی🔗

در تنها خط خروجی حداکثر زمانی که کسری میتواند بخوابد تا باز هم تیزی را ببرد بدهید. اگر کسری نمیتواند تیزی را ببرد 1-1 چاپ کنید.

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۳۰ n800,m1 600n \le 800, m\le 1 \ 600
۲ ۷۰ بدون محدودیت اضافی

مثال🔗

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

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

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

1
Plain text

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

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

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

0
Plain text

بدهکاری!


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

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

آن‌ها در شهری زندگی می‌کنند که به شکل یک گراف nn راسی و mm یالی است. شایان در ابتدا در راس SS است و می‌خواهد به راس TT که حمیدرضا در آنجا انتظارش را می‌کشد برود تا با او تنیس بازی کند(حمیدرضا خیلی اهل فوتبال نیست)

همزمان که شایان به سمت راس TT می‌رود، بهنود نیز که از اینکه نتوانسته طلبش را وصول کند، افسرده و پریشان شده با سرعتی برابر شایان گشتی مشخّص را با هدفی نامشخص طی می‌کند.(هر دو همزمان شروع به حرکت می‌کنند و برایشان طی کردن هر یال ۱ ثانیه زمان می‌برد) شایان کاملا مسیری که بهنود طی می‌کند را می‌داند، و سعی می‌کند گشتی را انتخاب کند که در هیچ کجای آن بهنود را نبیند٬ همچنین شایان می‌تواند در ۱ ثانیه در یک راس ثابت بماند و حرکت نکند یا در یک راس چند بار برود اما مسیر بهنود کاملا ساده است. (دقت کنید که شایان ممکن است بهنود را در یک راس یا در یک یال ببیند، در صورتی که هر دو همزمان در حال طی کردن آن یال باشند.)

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

ورودی🔗

در سطر اول ورودی دو عدد nn و mm و در سطر بعد دو عدد SS و TT آمده‌است.

در mm سطر بعد هر خط، دو عدد uu و vv آمده است، که به معنی وجود یالی بی جهت از راس uu به راس vv می‌باشد.

در سطر بعدی عدد kk و در ادامه kk عدد آمده است که عدد iiام برابر با راس iiام مسیر بهنود است.

1n,m1 000 0001 \le n, m \le 1\ 000\ 000 1s,t,u,v,kn1 \le s, t, u, v, k \le n 1u,vn1 \le u , v \le n

  • تضمین می‌شود گراف ساده است.

خروجی🔗

در تنها سطر خروجی، طول کوتاه ترین گشت با شرط گفته شده در صورت سوال را چاپ کنید. اگر چنین گشتی وجود ندارد، -1‍ چاپ کنید.

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۳۱ n,m2 000n, m \le 2\ 000
۴ ۶۹ بدون محدودیت اضافی

ورودی نمونه🔗

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

خروجی نمونه🔗

2
Plain text

میانگین


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

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

در اسپادانا، nn سرباز با شماره‌های 11 تا nn به ترتیب در یک صف قرار دارند که هوشمندی سرباز 1in1 \le i \le n برابر aia_i است. هوشمندی یک گروه از سربازها نیز برابر میانگین هوشمندی سربازهای آن گروه است. برای مثال هوشمندی یک گروه 33 نفره از سرباز‌ها با هوشمندی 1,3,4{1, 3, 4} برابر 83\frac{8}{3} است.

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

به بیان دقیق‌تر کیوان باید سربازها را به حداقل kk زیردنباله متوالی افراز کند.

اعتبار یک گروه بندی توسط کیوان را مینیمم هوشمندی بین گروه‌ها تعریف می‌کنیم. برای مثال فرض کنید دنباله a=<1,2,3,5>a = <1, 2, 3, 5> باشد، و کیوان دنباله را به 22 زیردنباله متوالی مثل 1,2{1, 2} و 3,5{3, 5} افراز کند در این‌صورت هوشمندی گروه‌ها برابر 32\frac{3}{2} و 44 می‌شود. درنتیجه اعتبار این گروه‌بندی 32\frac{3}{2} است.

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

ورودی🔗

در خط اول ورودی دو عدد n,kn, k آماده است.

سپس nn عدد a1,a2,...,ana_1, a_2, ..., a_{n} آمده است که میزان هوشمندی سرباز‌ها را معین می‌کند. 1kn100 0001 \le k \le n \le 100\ 000 0ai1090 \le a_i \le 10^{9}

خروجی🔗

در تنها خط خروجی, جواب مساله را چاپ کنید.

با توجه به اینکه جواب ممکن است اعشاری باشد، جواب شما در صورتی پذیرفته می‌شود که اختلاف آن با جواب بهینه کمتر از 10610^{-6}باشد.

زیر مسئله‌ها🔗

زیرمسئله نمره محدودیت
۱ ۱۰ k2k \le 2
۱ ۲۰ n1 000n \le 1\ 000
۲ ۳۰ k10k \le 10
۳ ۴۰ بدون محدودیت اضافی

مثال🔗

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

4 2
2 1 4 3
Plain text

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

2.33333333333
Plain text

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

4 3
2 1 4 3        
Plain text

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

2.0000000000
Plain text

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

10 4
13 4 7 3 1 17 5 8 7 6    
Plain text

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

6.499999999
Plain text

مسئله راه‌بندان


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

شما بایستی از الگوریتم AA* برای حل مسئله راه‌بندان استفاده کنید.

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

شکل

هدف این است که با کمترین تعداد حرکت، خودروی قرمز رنگ را که همواره به صورت افقی و روبروی درب خروجی (که در ضلع شرقی پارکینگ قرار دارد) پارک شده است، از پارکینگ خارج نماییم.

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

ورودی🔗

ورودی شامل مشخصات پارکینگ و خودروهای پارک شده در آن به همراه موقعیت خودروی قرمز رنگ است. خط اول ورودی عدد TT است که تعداد پارکینگ‌ها را مشخص می‌کند. پس از آن مشخصات TT پارکینگ به صورت پشت سر هم در ورودی می‌آید. برای هر پارکینگ، در خط اول سه عدد NN ،MM و VV قرار دارد که به ترتیب تعداد سطرها و ستون‌های پارکینگ و تعداد خودروهای درون آن (شامل خودروی قرمز رنگ) را مشخص می‌کند. VV خط بعدی هر یک مشخصات یک خودرو را نشان می‌دهد. در هر خط، ابتدا دو عدد RR و CC قرار دارند که به ترتیب سطر و ستون قسمت بالا و سمت چپ خودرو را مشخص می‌کنند. در ادامه راستای خودرو با یک کاراکتر hh برای افقی و یا vv برای عمودی مشخص می‌شود. در انتهای خط نیز عدد LL طول خودرو را نشان می‌دهد.

لازم به ذکر است که خانه بالای سمت چپ در سطر ١ و ستون ١ قرار داشته و خانه پایین سمت راست در سطر NN و ستون MM قرار دارد. ضمناً اولین خط از لیست مشخصات خودروها متعلق به خودروی قرمز رنگ است. نمونه ورودی متناسب با شکل در زیر آمده است.

خروجی🔗

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

ورودی نمونه🔗

1
6 6 13
3 1 h 2
1 1 v 2
1 2 v 2
1 4 h 3
2 3 h 2
2 5 h 2
3 4 v 2
4 2 v 2
5 3 h 2
5 5 v 2
5 6 v 2
6 1 h 2
6 3 h 2
Plain text

خروجی نمونه🔗

Test #1: 16
Plain text

لوزی‌های ستاره‌ای


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

برنامه‌ای بنویسید که عدد nn را از ورودی گرفته و دو لوزی به قطر nn را در کنار هم با استفاده از کاراکتر * (مطابق خروجی نمونه) چاپ کند.

ورودی🔗

در یک خط عدد فرد nn به شما داده می‌شود. 1n19 1 \le n \le 19

خروجی🔗

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

مثال🔗

ورودی نمونه🔗

5
Plain text

خروجی نمونه🔗

  *    *
 ***  ***
**********
 ***  ***
  *    *
Plain text

بالاترین وابستگی


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

فرض کنید NN وظیفه وجود دارد که از ۱ تا NN شماره‌گذاری شده‌اند. در این مسئله شما باید وظیفه‌ای که بیشترین تعداد وابستگی را دارد پیدا کنید.

یک وظیفه مانند AA به وظیفه دیگری مانند BB وابسته است در صورتی که AA به BB وابستگی مستقیم یا غیرمستقیم داشته باشد. به عنوان مثال اگر وظیفه AA به وظیفه BB وابسته است و وظیفه BB نیز به وظیفه‌ای مانند CC وابسته باشد، در این صورت وظیفه AA دو وابستگی خواهد داشت. یکی مستقیم و دیگری غیرمستقیم. فرض کنید که در وابستگی‌ها دور وجود ندارد.

ورودی🔗

ورودی شامل مجموعه‌ای از سناریوها می‌باشد. هر سناریو با یک عدد صحیح NN (1N10001 \le N \le 1000) شروع می‌شود. که تعداد وظیفه‌های آن سناریو را نشان می‌دهد و به دنبال آن NN خط می‌آید (هر خط برای یک وظیفه).

در خط ii ام از این NN خط، یک عدد صحیح TT (0TN10 \le T \le N-1) می‌آید که تعداد وابستگی‌های مستقیم وظیفه شماره ii را نشان می‌دهد و به دنبال آن TT عددصحیح می‌آید که شماره وظیفه‌هایی است که وابستگی به آنها وجود دارد.

ورودی یک سناریو با N=0N=0 خاتمه می‌یابد.

خروجی🔗

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

مثال🔗

ورودی نمونه🔗

3
1 2
1 3
0
4
2 2 4
0
2 2 4
0
0
Plain text

خروجی نمونه🔗

1
1 
Plain text

طلسم هری‌پاتر


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

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

توضیح تصویر

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

ورودی🔗

فایل ورودی حداکثر شامل ۱۰۰ نمونه ورودی است. (حداکثر شامل ۵ نمونه بزرگ) هر نمونه یک خط شامل یک جفت رشته که با فاصله جدا شده اند و مربوط به همان دنباله حروف روی دستبندهای قدرت چپ و راست هری است (به ترتیب) می باشد و هر رشته تنها از حروف کوچک تشکیل خواهد شد. طول هر رشته ورودی بین 11 تا 100100 کاراکتر است به جز در نمونه های بزرگ که طول هر رشته ورودی بین 11 تا 15001500 کاراکتر می باشد.

خروجی🔗

حداکثر قدرتی که هری با فعال کردن حروف روی دستبندها می تواند برسد (بر حسب واحد بید کتک‌زن) را چاپ کنید.

مثال🔗

ورودی نمونه🔗

ababdcbcc aabdccccbd
harrypotter plorppothaa
potterharry plorppothaa
Plain text

خروجی نمونه🔗

14
12
12
Plain text

عدد چاپ‌کن


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

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

ورودی🔗

در یک خط عدد به شما داده می‌شود. طول عدد از ۱۰۰ کوچکتر است.

خروجی🔗

به ازای هر رقم ابتدا خود آن رقم به همراه ‍: را چاپ کرده سپس به تعداد آن رقم از همان رقم چاپ کنید.

مثال🔗

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

50943
Plain text

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

5: 55555
0:
9: 999999999
4: 4444
3: 333
Plain text

شیر


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

مادر سوکراتیس پاپاستوپولوس برای تقویت سوکرات هر روز برای او یک لیوان شیر پاستوریزه آماده می‌کند. سوکرات ۳ لیوان با ظرفیت‌های A,B,CA,B,C دارد که هر یک اعدادی در بازه ۱ تا ۲۰ هستند. مادر سوکرات هر روز لیوان با ظرفیت CC را پر از شیر می‌کند ولی از آنجا که سوکرات بازیگوش است ممکن است شیر را مدام از این لیوان به لیوان دیگر بریزد!

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

برنامه‌ای بنویسید که مادر سوکراتیس پاپاستوپولوس بداند با این بازیگوشی سوکرات (ریختن شیر از لیوانی به لیوان دیگر)، چه مقدار شیر می‌تواند در لیوان‌ با ظرفیت CC پس از هر حرکت وجود داشته باشد در حالیکه لیوان با ظرفیت AA خالی باشد.

ورودی🔗

یک خط شامل سه عدد CC , BB , AA 1A,B,C201 \le A , B , C \le 20

خروجی🔗

تمامی مقادیر ممکن شیر، در لیوان با ظرفیت CC در حالی که لیوان با ظرفیت AA خالی باشد. این مقادیر باید به صورت صعودی مرتب شده باشند.

مثال🔗

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

8 9 10 
Plain text

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

1 2 8 9 10
Plain text

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

2 5 10 
Plain text

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

5 6 7 8 9 10
Plain text

شبکه اجتماعی


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

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

  • Add <username> <gender> <age> <id>
  • Find <id>

در دستور دوم ممکن است شناسه‌ی نوشته شده معرف یک شخص نباشد؛ در این صورت شما باید در صورت وجود، افرادی را که شناسه‌ی آن‌ها با کاراکترهای نوشته شده شروع می‌شود به عنوان نتیجه‌ی جست‌وجو گزارش کنید. اگر تعداد این افراد بیشتر از ۱۰ نفر بود، فقط ۱۰ نفر اول (به ترتیب لغت‌نامه‌ای) را گزارش کنید.

ورودی🔗

در هر خط از ورودی برنامه، یکی دستورهای بالا وارد خواهد شد. تعداد دستورات از ۱۰۰۰۰۰ کمتر است.

خروجی🔗

برای دستورهای Add عبارتی به شکل User <id> added successfully را در خروجی چاپ کنید.

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

مثال🔗

ورودی نمونه🔗

Add Ali male 20 ali20ali
Add Mohammad male 21 mohammadm
Add Akbar male 30 akbar30
Find ali
Add Maryam female 20 maryam20
Find mohammad21
Add Mahtab female 13 mahtab13
Add Maziar male 40 maziarAk
Find ma
Plain text

خروجی نمونه🔗

User ali20ali added successfully
User mohammadm added successfully
User akbar30 added successfully
1 Ali male 20 ali20ali
User maryam20 added successfully
2 No user found
User mahtab13 added successfully
User maziarAk added successfully
3 Mahtab female 13 mahtab13
3 Maryam female 20 maryam20
3 Maziar male 40 maziarAk
Plain text

مبنای آینه‌ای


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

برنامه‌ای بنویسید که به ترتیب سه ورودی a,b,ca,b,c را دریافت کرده به طوری که aa عددی در مبنای bb بوده و cc مبنای عددی است که باید حساب شود: یعنی:

(a)b=(x)c(a)_b = (x)_c

آنگاه اگر xx پالیندورم(آینه‌ای) است چاپ کند YESYES و گرنه NONO.

یک عدد را پالیندروم یا آینه‌ای می‌گوییم هرگاه با معکوسش برابر باشد مثلاً ۱۲۱ آینه‌ای است ولی ۱۳۲ نیست.

ورودی🔗

در خط اول عدد aa ، در خط دوم عدد bb و در خط سوم عدد cc به شما داده می‌شود. 1a106 1 \le a \le 10^6

2c,b102 \leq c,b \leq 10

خروجی🔗

در یک خط عبارت YESYES یا NONO را چاپ کنید.

مثال🔗

ورودی نمونه🔗

505
6
7
Plain text

خروجی نمونه🔗

YES
Plain text

سه‌تایی فیثاغورثی


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

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

ورودی🔗

در یک خط عدد nn به شما داده می‌شود. 1n90 000 1 \le n \le 90\ 000

خروجی🔗

در تنها خط خروجی چنانچه چنین مجموعه ای یافت می‌شد، اعضایش را به ترتیب از کوچک به بزرگ چاپ کنید در غیر اینصورت عبارت ImpossibleImpossible را چاپ کنید.

مثال🔗

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

12
Plain text

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

3 4 5
Plain text

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

30
Plain text

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

5 12 13
Plain text

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

13
Plain text

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

Impossible
Plain text

فرزاد بازی‌کن


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

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

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

ورودی🔗

در اولین خط ورودی ابعاد ماتریس های ورودی و در ادامه دو ماتریس گرفته می‌شود. طول ماتریس ها از ۱۰ کوچکتر است.

خروجی🔗

پس از انجام محاسبات، در خروجی یکی از دو کلمه ی FarzadFarzad یا DanialDanial نمایش داده می‌شود.

مثال🔗

ورودی نمونه🔗

2
2 1
4 -3
-1 0
5 -2
Plain text

خروجی نمونه🔗

Farzad
Plain text

بسی پرسش


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

برنامه‌ای بنویسید که عدد nn و سپس یک دنباله nn-تایی a1,a2,a3,...,ana_1, a_2, a_3, ..., a_n را از ورودی بخواند. سپس به برنامه‌ی شما qq پرسش داده می‌شود که هر پرسش بصورت یک عدد rr است و برنامه‌ی شما باید نتیجه‌ی این پرسش را چاپ کند. نتیجه‌ی پرسش rr برابر مقدار زیر است:

i=1rai xor (ri)\sum _{i = 1} ^ r a_i \ xor\ (r - i)

برنامه‌تان را طوری بنویسید که پیش‌پردازش طولانی نداشته باشد و پاسخ هر پرسش را سریع بدهد؛ یعنی پیش از پرسش اول و پس از دریافت هر پرسش تا پایان خروجی دادن کمتر از ضریب ثابتی از nn دستور (مستقل از دیگر متغیرهای ورودی بجز nn) انجام بشود. همچنین کل اجرای برنامه‌ی شما نباید بیش از ۲ ثانیه طول بکشد.

راهنمایی:

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

ورودی🔗

در سطر اول ورودی دو عدد nn و qq آمده است و در سطر دوم nn عدد طبیعی آمده است که عدد ii-ام نمایان‌گر aia_i است. سپس در qq سطر بعدی هر خط یک سوال بصورت یک عدد طبیعی آمده است که برابر rr است.

1ai1 000 0001 \le a_i \le 1\ 000\ 000 1rn10 0001 \le r \le n \le 10\ 000 1q500 0001 \le q \le 500\ 000

خروجی🔗

در qq سطر هریک یک عدد چاپ کنید که پاسخ به یکی از پرسش‌های داده شده است.

مثال🔗

ورودی نمونه🔗

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

خروجی نمونه🔗

4
8
14
17
Plain text

پاسخ پرسش‌ها به ترتیب:

4 xor 0=44\ xor\ 0 = 4

(4 xor 1)+(3 xor 0)=5+3=8(4 \ xor\ 1) + (3 \ xor\ 0) = 5 + 3 = 8

(4 xor 2)+(3 xor 1)+(6 xor 0)=6+2+6=14(4 \ xor\ 2) + (3 \ xor\ 1) + (6 \ xor\ 0) = 6 + 2 + 6 = 14

(4 xor 3)+(3 xor 2)+(6 xor 1)+(2 xor 0)=7+1+7+2=17(4 \ xor\ 3) + (3 \ xor\ 2) + (6 \ xor\ 1) + (2 \ xor\ 0) = 7 + 1 + 7 + 2 = 17

همه‌ی زیرمجموعه‌ها


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

برنامه‌ای بنویسید که با ورودی گرفتن عدد nn، همه‌ی زیرمجموعه‌های مجموعه‌ی {1,2,3,...,n}\{ 1, 2, 3, ..., n \} را چاپ کند. این زیرمجموعه‌ها را به ترتیب الفبایی مرتب کنید؛ یعنی ابتدا عناصر هر زیرمجموعه را مرتب کنید و سپس به آن‌ها مانند کلمات نگاه کنید و به ترتیبی که در لغت‌نامه می‌آیند مرتب‌شان کنید.

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

برای آشنایی با قالب خروجی دادن به نمونه‌ها توجه کنید.

ورودی🔗

ورودی تنها شامل یک خط است که در آن یک عدد طبیعی nn آمده است. 1n151 \le n \le 15

خروجی🔗

خروجی برنامه‌ی شما باید شامل 2n2^n خط باشد که در هر خط یک زیرمجموعه چاپ شود.

مثال🔗

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

1
Plain text

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

{}
{1}
Plain text

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

3
Plain text

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

{}
{1}
{1, 2}
{1, 2, 3}
{1, 3}
{2}
{2, 3}
{3}
Plain text