المپدیا

دانش‌نامه‌ی المپیاد کامپیوتر ایران

ابزار کاربر

ابزار سایت


سوالات المپیاد:متفرقه:آزمون های اینترنتی ۸۹ تا ۹۱:سوال ۳۹

Army

یکی مرد جنگی به از صد هزار. (حکیم ابوالقاسم فردوسی).

در نقشه‌های نظامی، هر سرباز یک نقطه در صفحه با مختصات صحیح ‎$(x,y)$‎ است. افراد سپاه به تعدادی جوخه افراز شده‌اند و هر سرباز دقیقا عضو یک جوخه است. هر جوخه شامل چهار سرباز با مختصه‌های $(x,y)$، $(x+1,y+1)$، $(x,y+1)$ و $(x+1,y)$ است و سربازی که مختصات ‎$(x,y)$‎ دارد، سرجوخه نامیده می‌شود. بدیهی است در هیچ نقطه ای دو سرباز وجود ندارد.

‎ هر دو سربازی که مولفه ‎$x$‎ و یا ‎$y$‎ یکسان دارند با هم در تماس بی‌سیم هستند. در یک عملیات نظامی می‌خواهیم افراد سپاه را به تعدادی لشکر تقسیم کنیم. در اصطلاح به این عمل لشکرکشی می‌گوییم. در این کار ممکن است افراد یک جوخه به لشکرهای مختلفی فرستاده شوند. هر لشکر دقیقا ‎$X$‎ سرباز دارد و افراد یک لشکر باید با استفاده از بی‌سیم، مؤلفه‌ای همبند تشکیل دهند.

‎ برنامه‌ای بنویسید که:

  • تعداد جوخه‌ها ‎$X$‎ و ‎$n$‎ تعداد و مختصات سرجوخه‌ها را از ورودی بخواند؛
  • در صورت ممکن، ‎$4 \times n$‎ سرباز را به تعدادی زیر مجموعه ‎$X$‎ عضوی همبند تقسیم کند و تقسیم‌بندی را در خروجی بنویسید؛
  • در غیر این‌صورت، اعلام کند که این کار ممکن نیست.

ورودی

  • در سطر اول به ترتیب دو عدد ‎$n$‎ و ‎$X$‎ قرار دارند.‎
  • در سطر دوم تا ‎$n+1$‎ام، در هر سطر مختصات یکی از ‎$n$‎ سرجوخه قرار دارد.‎
  • ‎$1 \leq n \leq 40000$
  • در ‎$80$‎ درصد تست ها ‎$n \leq 10000$.
  • مؤلفه‌های ‎$x$‎ و ‎$y$‎ هر دو سرباز در تایپ ‎int‎ قابل ذخیره هستند.

خروجی

  • درصورتی که موفق شدید سربازها را به ‎$X$‎ تایی‌ها افراز کنید،‎ در سطر اول، رشته Yes را چاپ کنید. پس از آن، در هر سطر، ‎$X$‎ زوج مختصات چاپ کنید که هر کدام نشان‌دهنده‌ی یک سرباز است. دقت کنید که این عددها را با فاصله از هم جدا کنید.
  • در صورتی که لشکرکشی ناموفق بود، در تنها سطر خروجی، No چاپ کنید.

محدودیت‌ها

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

ورودی و خروجی نمونه

ورودی نمونه خروجی نمونه
3 2‎
-‎1 1‎
2 3‎
-‎1 3
1
1 2
2 2‎
0 2‎
2 3
2
1 2

ابزار صفحه