دستگیر کردن دزدها


  • محدودیت زمان: ۱۰ ثانیه (برای تمامی زبان‌های برنامه‌نویسی)
  • محدودیت حافظه: ۵۱۲ مگابایت (برای تمامی زبان‌های برنامه‌نویسی)

در این مسئله، NN پلیس وجود دارد که با 11 تا NN شماره‌گذاری شده‌اند و MM دزد وجود دارد که با 11 تا MM شماره‌گذاری شده‌اند. همه‌ی افراد (پلیس‌ها و دزدان) نقطه‌ای دوبعدی در یک صفحهٔ دکارتی هستند. مختصات پلیس ii-ام را با (Xpi,Ypi)(Xp_i, Yp_i) و مختصات دزد ii-ام را با (Xti,Yti)(Xt_i, Yt_i) نشان می‌دهیم.

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

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

ورودی🔗

  • اولین خط ورودی شامل یک عدد صحیح TT است که تعداد سناریوها را نشان می‌دهد. سپس توصیف TT سناریو در ادامه می‌آید.
  • اولین خط هر مورد سناریو شامل دو عدد صحیح جدا شده با فاصله NN و MM است (اول NN می‌آید و سپس MM).
  • NN خط بعدی دنبال می‌شود. برای هر ii (1 ≤ iiNN)، خط ii-ام از این خطوط دو عدد صحیح جداشده با فاصله XpiXp_i و YpiYp_i را در خود دارد.
  • MM خط دیگر دنبال می‌شود. برای هر ii (1 ≤ iiMM)، خط ii-ام از این خطوط دو عدد صحیح جداشده با فاصله XtiXt_i و YtiYt_i را در خود دارد.

خروجی🔗

برای هر سناریو، یک خط شامل یک عدد صحیح چاپ کنید: حداقل تعداد افسران پلیس اضافی. (پاسخ می‌تواند صفر هم باشد.)

محدودیت‌ها🔗

  • 1T101 \le T \le 10
  • 0N1050 \le N \le 10^5
  • 1M1051 \le M \le 10^5
  • Xpi,Ypi2×108|Xp_i|, |Yp_i| \le 2 \times 10^8 برای هر ii معتبر
  • Xti,Yti2×108|Xt_i|, |Yt_i| \le 2 \times 10^8 برای هر ii معتبر
  • هیچ دو نفر (افسران پلیس یا دزدها) در یک موقعیت یکسان نیستند.

مثال🔗

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

1
1 1
10 10
20 20
Plain text

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

2
Plain text

حساب و کتاب


  • محدودیت زمان: ۱۰ ثانیه (برای تمامی زبان‌های برنامه‌نویسی)
  • محدودیت حافظه: ۵۱۲ مگابایت (برای تمامی زبان‌های برنامه‌نویسی)

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

بدهکار و طلبکار بودن یا نبودن افراد را طبق همان تعاریف بدیهی‌ای که در واقعیت داریم چنین تعریف می‌کنیم:

  • فرد xx به فرد yy بدهکار است، اگر و تنها اگر مقداری اکیداً بزرگ‌تر از 0.000.00 دلار وجود داشته‌باشد که زمانی قبل‌تر yy به xx قرض داده‌باشد اما هنوز آن را کامل پس نگرفته‌باشد.
  • فرد xx از فرد yy طلبکار است، اگر و تنها اگر مقداری اکیداً بزرگ‌تر از 0.000.00 دلار وجود داشته‌باشد که زمانی قبل‌تر xx به yy قرض داده‌باشد اما هنوز آن را کامل پس نگرفته‌باشد.

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

دستورهایی که به شما داده می‌شود، در قالب یکی از چند حالت زیر است:

  1. 1 s_1 s_2 x: این دستور، یعنی فردی با نام s1s_1 مقدار xx دلار به فردی با نام s2s_2 قرض داد.
  2. 2: با این دستور، از شما درخواست می‌شود که نام کسی را چاپ کنید که مجموع میزان سرمایه‌ی به‌دست آورده‌اش منهای مجموع میزان سرمایه‌ی از دست داده‌اش بیشینه (و مثبت) باشد. اگر چندین فرد این ویژگی را داشتند، نام فردی را بنویسید که از نظر ترتیب لغت‌نامه‌ای کوچک‌تر است. اگر هیچ فردی که مجموع میزان سرمایه‌ی به‌دست آورده‌اش از مجموع میزان سرمایه‌ی از دست داده‌اش اکیداً بیش‌تر باشد وجود نداشت، فقط 1-1 چاپ کنید.
  3. 3: با این دستور، از شما درخواست می‌شود که نام کسی را چاپ کنید که مجموع میزان سرمایه‌ی به‌دست آورده‌اش منهای مجموع میزان سرمایه‌ی از دست داده‌اش کمینه (و منفی) باشد. اگر چندین فرد این ویژگی را داشتند، نام فردی را بنویسید که از نظر ترتیب لغت‌نامه‌ای کوچک‌تر است. اگر هیچ فردی که مجموع میزان سرمایه‌ی به‌دست آورده‌اش از مجموع میزان سرمایه‌ی از دست داده‌اش اکیداً کم‌تر باشد وجود نداشت، فقط 1-1 چاپ کنید.
  4. 4 s: با این دستور، از شما درخواست می‌شود که تعداد افرادی را چاپ کنید که فردی با نام ss به آن‌ها بدهکار است.
  5. 5 s: با این دستور، از شما درخواست می‌شود که تعداد افرادی را چاپ کنید که فردی با نام ss از آن‌ها طلبکار است.
  6. 6 s_1 s_2: با این دستور، از شما درخواست می‌شود که چاپ کنید فردی با نام s1s_1 دقیقاً چند دلار باید به فردی با نام s2s_2 بدهد تا حسابشان صاف شود. این مقدار می‌تواند مثبت یا صفر یا منفی باشد و باید دقیقاً با دو رقم اعشار چاپ شود (مقدار منفی به‌جای دادن پول، گرفتن پول را نشان می‌دهد).

ورودی🔗

در اولین خط ورودی عدد صحیح qq آمده‌است که تعداد دستورها را نشان می‌دهد. 1q1.5×1051 \leq q \leq 1.5 \times 10^5 در qq خط بعدی، هر خط از ورودی یکی از شش حالتی که در بالا بیان شد را دارد. تمام اسامی افراد فقط شامل حروف کوچک الفبای انگلیسی می‌شوند و تعداد حروف هیچ‌یک از ۸ بیش‌تر نیست. در همه‌ی انواع دستورها به‌جز دستورهای نوع ۱، تضمین می‌شود که نام فردی که در ورودی می‌آید جدید نیست (یعنی نامش پیش از آن حداقل یک بار دیگر هم در ورودی آمده‌است). تمام مقادیر عددی مالی (که به واحد دلار نوشته شده‌اند)، دقیقاً دارای ۲ رقم اعشار می‌باشند. این اعداد مثبت هستند و کم‌تر از 0.010.01 نیستند و بیش‌تر از 10000000.9910000000.99 هم نیستند.

خروجی🔗

به ازای دستورهای نوع ۲، ۳، ۴، ۵ و ۶ پاسخ درخواست را چاپ کنید (و به ازای دستورهای نوع ۱، در هیچ حالتی چیزی چاپ نکنید).

مثال🔗

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

21
1 mohsen hamid 5.50
1 hamid mohsen 5.50
1 ali mohsen 15.50
1 mohsen ali 15.50
1 ali reza 10.00
6 reza ali
1 reza ali 30.00
1 ali reza 40.00
6 reza ali
2
3
4 ali
5 ali
6 ali reza
1 reza ali 21.00
2
3
1 ali reza 1.00
2
3
6 ali reza
Plain text

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

10.00
20.00
reza
ali
0
1
-20.00
ali
reza
-1
-1
0.00
Plain text

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

27
1 a b 100.00
2
3
1 b c 100.00
2
3
6 a b
6 b c
6 c a
6 b a
6 c b
6 a c
1 c a 100.00
2
3
6 a b
6 b c
6 c a
6 b a
6 c b
6 a c
4 a
4 b
4 c
5 a
5 b
5 c
Plain text

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

b
a
c
a
-100.00
-100.00
0.00
100.00
100.00
0.00
-1
-1
-100.00
-100.00
-100.00
100.00
100.00
100.00
1
1
1
1
1
1
Plain text

نکات🔗

  • به ازای هر ورودی معتبر مسئله، دقیقاً یک خروجی مشخص درست وجود دارد.
  • علامت منفی را فقط پشت اعداد منفی بگذارید. برای مثال چاپ کردن -0.00 اشتباه است.

درخت‌سازی


  • محدودیت زمان: ۱۰ ثانیه (برای تمامی زبان‌های برنامه‌نویسی)
  • محدودیت حافظه: ۵۱۲ مگابایت (برای تمامی زبان‌های برنامه‌نویسی)

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

رئوس گراف با اعداد طبیعی از 11 تا nn شماره‌گذاری شده‌اند.

ورودی🔗

در اولین خط ورودی دو عدد nn و mm با یک فاصله بینشان آمده‌است که به ترتیب تعداد رئوس و یال‌های گراف را نشان می‌دهد. 1n20001 \leq n \leq 2000 0mn(n1)20 \leq m \leq \frac{n(n - 1)}{2}

در ادامه mm خط در ورودی آمده‌است. در iiامین خط از mm خط بعدی، دو عدد طبیعی xix_i و yiy_i نابرابر با یک فاصله بینشان آمده‌است که نشان می‌دهد یال (xi,yi)(x_i, y_i) در گراف وجود دارد.

به ازای هر ii معتبر داریم: 1xi,yin 1 \leq x_i, y_i \leq n xiyi x_i \neq y_i

خروجی🔗

در اولین خط، اول aa (تعداد یال‌های لازم برای حذف شدن از گراف) و سپس bb (تعداد یال‌های لازم برای اضافه شدن به گراف) را با یک فاصله چاپ کنید. در هر یک از aa خط بعدی، شماره‌ی رئوس دو سر هر یالی که لازم است از گراف حذف شود را با یک فاصله چاپ کنید. سپس در هر یک از bb خط بعدی، شماره‌ی رئوس دو سر هر یالی که لازم است به گراف اضافه شود را با یک فاصله چاپ کنید.

مثال🔗

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

3 2
1 2
2 3
Plain text

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

0 0
Plain text

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

3 3
1 2
2 3
3 1
Plain text

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

1 0
1 3
Plain text

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

4 0
Plain text

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

0 3
1 2
2 3
3 4
Plain text

نکات🔗

  • هر جواب دلخواهی که گراف ورودی را تبدیل به یک درخت بکند معتبر خواهد بود، ترتیب چاپ کردن یال‌های خروجی مهم نیست، فقط دقت کنید که مقدار a+ba+b باید کمینه باشد، یعنی مجموع تعداد یال‌های حذف‌شده و یال‌های اضافه‌شده باید کمینه باشد.

انتخاب رشته


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

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

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

ورودی🔗

ورودی تنها شامل یک خط است که در آن عبارت EAST یا NOT EAST ظاهر شده است. اولی نشان‌دهنده‌ی سکونت متقاضی در شرق است و دومی نشان‌دهنده‌ی سکونت متقاضی در منطقه‌ی دیگری از تهران است. (تمامی حروف انگلیسی بزرگ هستند.)

خروجی🔗

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

مثال🔗

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

EAST
Plain text

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

YES
Plain text

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

NOT EAST
Plain text

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

NO
Plain text

رشته‌های خفن


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

یک رشته با طول LL را خفن می‌نامیم اگر L3L \ge 3 باشد و یک کاراکتر وجود داشته باشد که اکیداً بیش از L/2L/2 بار در این رشته ظاهر شود.

رشته‌ای به نام SS به شما داده شده است و شما باید QQ پرسش را در مورد این رشته پاسخ دهید. در هر پرسش، یک زیررشته‌ی پیوسته SL,SL+1,,SRS_L, S_{L+1}, \ldots, S_R\, به شما داده می‌شود. تمام زیررشته‌های پیوسته‌ی این زیررشته را در نظر بگیرید. شما باید تعیین کنید که آیا حداقل یکی از آن‌ها خفن است یا خیر.

ورودی🔗

  • اولین خط ورودی شامل یک عدد صحیح TT است که تعداد سناریوها را نشان می‌دهد. سپس توضیحات TT سناریو به دنبال آن می‌آید.
  • اولین خط هر سناریو شامل دو عدد صحیح جداشده با فاصله، NN و QQ است (اول NN می‌آید و سپس QQ).
  • خط دوم شامل یک رشته‌ی SS با طول NN است.
  • هر یک از QQ خط بعدی شامل دو عدد صحیح جداشده با فاصله‌ی LL و RR است که یک پرسش را توصیف می‌کند.

خروجی🔗

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

محدودیت‌ها🔗

  • 1T101 \leq T \leq 10
  • 1N,Q1051 \leq N, Q \leq 10^5
  • 1LRN1 \leq L \leq R \leq N
  • رشته‌ی SS فقط شامل حروف کوچک انگلیسی است.

مثال🔗

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

1
10 2
helloworld
1 3
1 10
Plain text

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

NO
YES
Plain text

موش و گربه


  • محدودیت زمان: ۱۰ ثانیه (برای تمامی زبان‌های برنامه‌نویسی)
  • محدودیت حافظه: ۵۱۲ مگابایت (برای تمامی زبان‌های برنامه‌نویسی)

در این مسئله، NN گربه (با شماره‌های 11 تا NN) و MM موش (با شماره‌های 11 تا MM) روی یک خط هستند. هر گربه و هر موش می‌خواهد از نقطه‌ای به سمت نقطه‌ای دیگر (شاید همان نقطه) روی این خط حرکت کند. طبیعتاً، گربه‌ها هم می‌خواهند موش‌ها را بخورند. هر گربه و هر موش با سرعت ثابت 11 حرکت می‌کند.

برای هر ii معتبر، ii-امین گربه در ابتدا در نقطه‌ی aia_i خواب است. در زمان sis_i، این گربه بیدار می‌شود و به سمت نقطه‌ی نهایی bib_i با سرعت ثابت و بدون هیچ پرشی حرکت می‌کند (بنابراین در زمان ei=si+aibie_i = s_i + |a_i-b_i| به این نقطه می‌رسد). پس از رسیدن به نقطه‌ی bib_i، دوباره به خواب می‌رود.

برای هر ii معتبر، ii-امین موش در ابتدا در نقطه‌ی cic_i پنهان شده است. در زمان rir_i، این موش از پنهانی در می‌آید و به سمت نقطه‌ی نهایی did_i به همان صورتی که گربه‌ها حرکت می‌کنند - با سرعت ثابت و بدون هیچ پرشی - حرکت می‌کند و در زمان qi=ri+cidiq_i = r_i + |c_i-d_i| (اگر خورده نشود) به این نقطه می‌رسد. پس از رسیدن به نقطه‌ی did_i، دوباره پنهان می‌شود.

اگر یک گربه و یک موش یکدیگر را ببینند (یعنی در یک نقطه و در یک زمان قرار بگیرند)، گربه موش را می‌خورد و موش ناپدید می‌شود و نمی‌تواند توسط گربه‌ای دیگر خورده شود. یک گربه‌ی خوابیده نمی‌تواند موشی را بخورد و یک موش پنهان نمی‌تواند خورده شود - به صورت دقیق‌تر، گربه‌ی ii تنها در صورتی می‌تواند موش jj را بخورد که در زمان tt با هم برخورد کنند به طوری که siteis_i \le t \le e_i و rjtqjr_j \le t \le q_j برقرار باشد.

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

ورودی🔗

  • خط اول ورودی شامل یک عدد صحیح TT است که تعداد سناریوها را نشان می‌دهد. توضیحات مربوط به TT سناریو در ادامه آمده است.
  • خط اول هر سناریو شامل دو عدد صحیح NN و MM است که با یک فاصله از هم جدا شده‌اند (در ابتدا NN می‌آید و سپس MM).
  • NN خط در ادامه آمده است. برای هر ii (1iN1 \le i \le N)، خط ii-ام از این خطوط شامل سه عدد صحیح aia_i، bib_i و sis_i است که با یک فاصله از هم جدا شده‌اند.
  • MM خط دیگر در ادامه آمده است. برای هر ii (1iM1 \le i \le M)، خط ii-ام از این خطوط شامل سه عدد صحیح cic_i، did_i و rir_i است که با یک فاصله از هم جدا شده‌اند.

خروجی🔗

برای هر سناریو، MM خط چاپ کنید. برای هر ii معتبر، خط ii-ام از این خطوط باید شامل یک عدد صحیح باشد: شماره گربه‌ای که موش ii-ام را می‌خورد و یا 1-1 اگر هیچ گربه‌ای این موش را نخورده است.

محدودیت‌ها🔗

  • 1T101 \le T \le 10
  • 0N1,0000 \le N \le 1,000
  • 1M1,0001 \le M \le 1,000
  • 1ai,bi,si1091 \le a_i, b_i, s_i \le 10^9 برای هر ii معتبر
  • 1ci,di,ri1091 \le c_i, d_i, r_i \le 10^9 برای هر ii معتبر
  • همه موقعیت‌های اولیه و نهایی همه‌ی گربه‌ها و موش‌ها متمایز هستند. البته درمورد هر موش خاص موقعیت شروع و پایان آن می‌تواند یکسان باشد. و درمورد هر گربه‌ی خاص موقعیت شروع و پایان آن می‌تواند یکسان باشد.

مثال🔗

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

1
8 8
2 8 2
12 18 2
22 28 4
32 38 4
48 42 2
58 52 3
68 62 1
78 72 3
3 6 3
13 19 3
21 25 3
31 39 3
46 43 4
59 53 2
65 61 4
79 71 2
Plain text

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

1
2
3
4
5
6
7
8
Plain text

خرید قانونی آهنگ


  • محدودیت زمان: ۱۰ ثانیه (برای تمامی زبان‌های برنامه‌نویسی)
  • محدودیت حافظه: ۵۱۲ مگابایت (برای تمامی زبان‌های برنامه‌نویسی)

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

برای ما NN آهنگ (شماره‌گذاری شده از 11 تا NN) و MM آلبوم (شماره‌گذاری شده از 11 تا MM) در دسترس وجود دارد. برای هر ii معتبر، آهنگ ii-ام ارزش موسیقیایی viv_i و pip_i تومان قیمت دارد و به آلبوم aia_i تعلق دارد. برای هر ii معتبر، آلبوم ii-ام bib_i تومان قیمت دارد. اگر یک آلبوم را بخریم، همه‌ی آهنگ‌های این آلبوم به خریداری شده محسوب می‌شوند. هم‌چنین امکان خرید هر آهنگ به صورت جداگانه نیز وجود دارد.

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

ورودی🔗

  • در اولین خط ورودی شامل سه عدد جدا از هم NN، MM و PP است (در ابتدا NN، بعد MM و سپس PP می‌آید).
  • NN خط بعدی دنبال می‌شود. برای هر ii (1iN1 \le i \le N)، خط ii-ام این خطوط شامل سه عدد جدا از هم aia_i، pip_i و viv_i است.
  • خط آخر شامل MM عدد جدا از هم b1,b2,,bMb_1, b_2, \ldots, b_M است.

خروجی🔗

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

محدودیت‌ها🔗

  • 1N,M,P1,0001 \le N, M, P \le 1,000
  • 1bi,piP1 \le b_i, p_i \le P برای هر ii معتبر
  • 1vi1061 \le v_i \le 10^6 برای هر ii معتبر
  • 1aiM1 \le a_i \le M برای هر ii معتبر

مثال🔗

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

5 2 24
1 7 2
1 5 2
1 4 1
2 9 1
2 13 2
10 15
Plain text

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

7
Plain text

گراف‌یابی


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

گراف دوبخشی کامل نوع خاصی گراف دوبخشی است. اگر دو بخش رأس‌های این گراف را با AA و BB نمایش دهیم، چنین گراف دوبخشی کاملی با KA,BK_{|A|, |B|} نمایش داده می‌شود و شرایط زیر را برآورده می‌کند:

  • به ازای هر aAa \in A و bBb \in B، یک یال بین رأس‌های aa و bb وجود دارد.
  • به ازای هر u,vAu, v \in A، هیچ یالی بین این رأس‌ها وجود ندارد.
  • به ازای هر u,vBu, v \in B، هیچ یالی بین این رأس‌ها نیز وجود ندارد.

یک گراف ساده با NN رأس (شماره‌گذاری شده از 11 تا NN) و MM یال به شما داده می‌شود. (توجه کنید که این گراف لزوماً دوبخشی نیست.) تعیین کنید که آیا این گراف حاوی گراف دوبخشی کامل K2,3K_{2, 3} به عنوان زیرگراف هست یا نه. به عبارت دیگر آیا امکان دارد که با حذف برخی (شاید صفر) رأس و برخی (شاید صفر) یال، K2,3K_{2, 3} را به دست آوریم یا خیر.

K2,3K_{2, 3}

ورودی🔗

  • در اولین خط دو عدد جدا از هم NN و MM قرار دارد (در ابتدا NN می‌آید و سپس MM).
  • در هر کدام از MM خط بعدی دو عدد جدا از هم uu و vv وجود دارد که نشان می‌دهد بین رأس‌های uu و vv یک یال ساده وجود دارد.

خروجی🔗

یک خط حاوی رشته‌ی YES چاپ کنید اگر گراف حاوی حداقل یک K2,3K_{2, 3} باشد و یا NO در صورتی که نباشد (تمامی حروف انگلیسی بزرگ هستند).

محدودیت‌ها🔗

  • 1N20001 \leq N \leq 2000
  • 0MN(N1)20 \leq M \leq \frac{N(N - 1)}{2}
  • 1u,vN1 \leq u, v \leq N
  • گراف ورودی ساده است و هیچ طوقه و یال چندگانه‌ای ندارد.

مثال🔗

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

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

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

YES
Plain text

هکاتون


  • محدودیت زمان: ۱۰ ثانیه (برای تمامی زبان‌های برنامه‌نویسی)
  • محدودیت حافظه: ۵۱۲ مگابایت (برای تمامی زبان‌های برنامه‌نویسی)

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

در حقیقت، سارا برای برنده شدن یا حتی تلاش برای برنده شدن در آنجا نیست؛ او همیشه به دنبال هکاتون‌های جدیدی است که به آن‌ها بپیوندد، به خصوص وقتی که با مزایای رایگان در آن هکاتون‌ها باشن. این بار، MM غرفه‌ی مختلف وجود دارد که شروع به توزیع وسایل و غذای رایگان خواهند کرد. می‌توان گفت هکاتون در یک جدول مستطیلی برگزار می‌شود (یعنی نمای از بالا به پایین مسابقه به این شکل است). غرفه‌ها همگی در سطر اول قرار دارند و غرفه‌ی ii-ام در مختصات (00، BiB_i) قرار دارد. سارا مکان هر یک از NN رقیب دیگر را می‌داند، رقیب i-ام در مختصات (RiR_i, CiC_i) قرار دارد، در حالی که مکان سارا مختصات (XX, YY) است. ممکن است چند رقیب در یک مختصات قرار گرفته باشند.

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

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

به او کمک کنید که تعداد افرادی که قبل یا همزمان با او به غرفه انتخاب شده می‌رسند را محاسبه کند.

ورودی🔗

  • خط اول شامل یک عدد صحیح MM است که تعداد غرفه‌هاست.
  • خط دوم شامل MM عدد صحیح BiB_i است که هر کدام مختصات ستون ii-امین غرفه هستند.
  • خط سوم شامل دو عدد صحیح XX و YY است که به ترتیب سطر و ستون موقعیت سارا هستند.
  • خط چهارم شامل یک عدد صحیح NN است که تعداد سایر رقباست.
  • سپس، NN خط بعدی شامل دو عدد صحیح RiR_i و CiC_i است که به ترتیب سطر و ستون i-امین رقیب هستند.

خروجی🔗

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

محدودیت‌ها🔗

  • 1N,M1061 \leq N, M \leq 10^6
  • 1Bi1091 \leq B_i \leq 10^9به ازای تمامی iiهای معتبر
  • همه‌ی مقادیر BiB_i متمایز هستند.
  • 0Ri,Ci,X,Y1090 \leq R_i, C_i, X, Y \leq 10^9به ازای تمامی iiهای معتبر

مثال🔗

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

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

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

1
Plain text

توضیح نمونه ۱🔗