بریم مصر


  • محدودیت زمان: ۳ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت
  • آزمون عملی سوم فاینال سی و سومین دوره المپیاد کامپیوتر ایران

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

حال در فرودگاه QQ تاکسی موجود است. تاکسی شماره ii آن سه نفر را در فرودگاه سوار کرده و مقابل ساختمان lil_i پیاده می‌کند و سپس در مقابل ساختمان rir_i منتظر می‌ماند تا آن‌ها را سوار کرده و به سمت هتل ببرد. (liri)(l_i≤r_i) آن‌ها اگر تاکسی شماره ii را انتخاب کنند، پس از پیاده شدن از تاکسی همواره به سمت راست می‌روند تا به ساختمان rir_i برسند و آن‌جا سوار تاکسی شوند.

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

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

بازدید از یک ساختمان در صورتی برای آن‌ها خوشایند است که اکثریت آن‌ها (حداقل دو نفر) راضی به بازدید از آن ساختمان باشند.

آن‌ها به ازای هر کدام از تاکسی‌ها می‌خواهند بدانند که به چند طریق می‌توانند تعدادی از ساختمان‌هایی که از رو به روی آن‌ها گذر می‌کنند را انتخاب کنند و از آن‌ها بازدید کنند. توجه کنید که آن‌ها از ساختمان های lil_i و rir_i نیز می‌توانند بازدید کنند. به عبارت دیگر آن‌ها از ساختمان‌های یک زیربازه از بازه‌ی [li,ri][l_i,r_i] بازدید می‌کنند.

همچنین نفر سوم به عنوان پیرترین نفر جمع به شما توصیه می‌کند که برای فهم بهتر سوال به نمونه ورودی ها توجه کنید.

ورودی🔗

در خط اول ورودی، nn یا همان تعداد ساختمان ها می‌آید. 1n5000001 \leq n \leq 500 \, 000

در خط دوم ورودی، nn عدد صحیح می آیند که عدد ii ام همان aia_i است. 0ai1090 \leq a_i \leq 10^ 9

در خط سوم ورودی، QQ یا همان تعداد تاکسی ها می‌آید. 1Q5000001 \leq Q \leq 500 \, 000

در QQ خط بعدی در هر خط دو عدد rir_i و lil_i به ترتیب می‌آیند. 1lirin1 \leq l_i \leq r_i \leq n

خروجی🔗

در تنها خط خروجی QQ عدد چاپ کنید که عدد ii ام تعداد حالت‌های بازدید کردن آن‌ها در صورت استفاده از تاکسی iiام است.

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

زیرمسئله نمره محدودیت
۱ ۹ n500n \leq 500
۲ ۱۶ n5000 n \leq 5000
۳ ۳۶ n105,Q3000n \leq 10^5, Q \leq 3000
۴ ۳۹ بدون محدودیت اضافی

مثال‌ها🔗

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

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

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

11 9 6 5 3
Plain text

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

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

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

29 15 18 10 3
Plain text

در ورودی نمونه اول به ازای تاکسی دوم، تعداد کل حالت‌هایی که می‌توانند از تعدادی ساختمان متوالی بازدید بکنند برابر 1010 است. از بین این 1010 حالت، حالتی که از کل ساختمان‌های بازه [2,5][2, 5] بازدید بکنند خوشایند نیست؛ زیرا نفر اول و دوم راضی به بازدید از ساختمان با زیبایی 33 نیستند.

مجاور خوب


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت
  • آزمون عملی سوم فاینال سی و سومین دوره المپیاد کامپیوتر ایران

امتیاز یک دنباله برابر تعداد جفت خانه‌های مجاوری است که مجموع آن‌ها برابر kk می‌شود. به عنوان مثال اگر k=3k=3 باشد، امتیاز دنباله 1,2,3,0,2⟨1,2,3,0,2⟩ برابر 22 است.

به شما عدد صحیح نامنفی kk و یک دنباله nn تایی از اعداد داده می‌شود. شما باید تعداد جایگشت‌های از این دنباله که امتیازشان برابر ii می‌شود را به ازای هر ii از 00 تا n1n - 1 بدست آورید. چون اعداد جواب ممکن است بزرگ شود کافی است که باقی‌مانده تقسیم هر عدد را بر 998244353998244353 چاپ کنید.

توجه کنید که اعداد مساوی قابل تمایز هستند.

ورودی🔗

در خط اول ورودی، دو عدد صحیح nn و kk به ترتیب می آیند. 1n5000,0k1091 \leq n \leq 5000, \quad 0 \leq k \leq 10^9

در خط دوم ورودی، nn عدد صحیح می آیند که نشان دهنده دنباله ورودی است (اعداد دنباله نامنفی و کمتر از 10910^9 هستند).

خروجی🔗

در تنها خط خروجی nn عدد چاپ کنید که به ترتیب برابر با تعداد جایگشت‌های دنباله با امتیاز 0,1,,n10, 1, \cdots , n - 1 باقی‌مانده بر 998244353998244353 است.

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

زیرمسئله نمره محدودیت
۱ ۴ n10n \leq 10
۳ ۱۲ تعداد اعداد متمایز حداکثر دو است.
۴ ۱۷ تعداد اعداد متمایز حداکثر سه است.
۵ ۲۳ n500n \leq 500
۶ ۴۴ بدون محدودیت اضافی

مثال‌ها🔗

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

5 3
1 2 1 2 1
Plain text

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

0 24 36 48 12
Plain text

شجره‌نامه


  • محدودیت زمان: ۳ ثانیه
  • محدودیت حافظه: ۵۱۲ مگابایت
  • آزمون عملی سوم فاینال سی و سومین دوره المپیاد کامپیوتر ایران

یاسین تصمیم گرفته شجره‌نامه‌ی خانواده خود را بسازد.

او تصویر n+1n + 1 نفر را در اختیار دارد. همچنین سن هر کدام از افراد را می‌داند. اما از بین این افراد فقط بزرگ خاندان را می‌شناسد.

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

بزرگ خاندان به یاسین می‌گوید که برایش یک درخت ریشه‌دار بسازد. هر راس این درخت یک اندیس دارد و روی راس با اندیس ii، عدد aia_i نوشته شده است. در ابتدا درخت یک راس با اندیس 00 دارد که روی آن عدد ++\infty نوشته شده است.

بزرگ خاندان در nn مرحله، هر مرحله یک راس به درخت اضافه می‌کند.

او در مرحله‌ی ii-ام عدد pip_i را به یاسین می‌گوید و سپس از او می‌خواهد راس ii را به یکی از دو نحو زیر به درخت اضافه کند:

  1. راس ii را فرزند راس pip_i قرار می‌دهد؛ یعنی یک یال بین راس ii و pip_i می‌کشد. (0pi<i0 \leq p_i < i)
  2. بزرگترین خاندان ابتدا از یاسین می‌خواهد که پایین ترین جد راس pip_i را پیدا کند که عددش از aia_i کمتر نباشد. (0pi<i0 \leq p_i < i) در صورتی که apiai a_{p_i} \geq a_i ، راس ii را فرزند راس pip_i قرار می‌دهد؛ یعنی یک یال بین راس ii و pip_i می‌کشد. در غیر این صورت یاسین باید رئوس vv و uu را طوری پیدا کند که :
    • هر دو جد راس pip_i باشند. (راس pip_i هم یکی از اجداد خودش است.)
    • راس vv پدر راس uu باشد.
    • نامساوی au<aiava_u < a_i \leq a_v و به ازای هر راس مانند zz که vv جد zz و zz جد pip_i باشد داریم az<aia_z < a_i
    • حال راس ii را وسط یال vv و uu اضافه می‌کنیم. یعنی راس vv پدر راس ii و راس ii پدر راس uu می‌شود.

در انتها بزرگ خاندان از او می‌خواهد به ازای هر راس از 11 تا nn پدرش در درخت نهایی را به او بگوید. یاسین که از برآورده کردن خواسته‌های پیرمرد‌ها و درخت‌هایشان خسته شده بود از شما می‌خواهد کمکش کنید تا خود را به بزرگ خاندان ثابت کند.

ورودی🔗

در خط اول ورودی nn می آید. 1n1061 \leq n \leq 10^6

سپس در خط iiام از nn خط بعدی، سه عدد tit_i، pip_i و aia_i به ترتیب آمده اند. ti{1,2},0pi<i,1aint_i \in \{1, 2\} ,\quad 0 \leq p_i < i, \quad 1 \leq a_i \leq n

اگر tit_i برابر با 11 بود این عملیات از نوع اول و اگر برابر با 22 بود از نوع دوم است.

خروجی🔗

در تنها خط خروجی باید nn عدد چاپ کنید که عدد ii ام باید پدر راس ii در درخت نهایی باشد.

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

زیرمسئله نمره محدودیت
۱ ۷ n5000n \leq 5000
۲ ۱۲ ai2a_i \leq 2
۳ ۸۱ بدون محدودیت اضافی

مثال‌ها🔗

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

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

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

5 1 0 1 3 3
Plain text