دزدان دریایی کاراییب در زندانی قرار دارند که به شکل جدولی $n \times n$ است. از آنجایی که جک در جوانی المپیاد کامپیوتری بوده کامپیوتر مرکزی زندان را هک کرده و متوجه شده است که اتاق آن ها در خانه $(1, 1)$ جدول و در خروجی زندان در خانه $(n, n)$ قرار دارد.
هر کدام از خانههای جدول یک اتاق است که چهار در دارد که هر کدام روی یکی از ضلع های مربع هستند.
جک بعد از هک کردن کامپیوتر مرکزی متوجه شد که بعضی از خانههای جدول مین گذاری شدهاند. طبعا هیچکس دوست ندارد از روی مین رد بشود. حالا مسئله این است که جک میخواهد گروهش را به بیشترین تعداد دسته ممکن افراز کند و هر گروه از یک مسیر جدا برود. به این معنی که جک نیاز دارد بیشترین تعداد مسیر فرار ممکن را بداند به طوریکه هیچ اتاقی در دو مسیر دیده نشود (به جز اتاق شروع و پایان). و البته واضح است که این بیشترین تعداد مسیر ممکن حداکثر ۲ هست.
حالا قرار است جک به شما مختصات مینها را یکی یکی بدهد و بعد از هر کوئری شما بیشترین تعداد مسیر ممکن را بگویید!
جک طی تحقیقاتش فهمید که مشتلی مسئول زندان است. همه ما میدانیم که جک و مشتلی از زمان المپیادشان تا الان دشمنان خونین همدیگر هستند. بنابراین مشتلی برای اینکه اطمینان حاصل کند جک از زندان فرار نمیکند به شایان دستور داد که هرگونه ارتباط از داخل زندان به خارج را ببندد و شایان نیز چنین کرد ولی از آنجایی که قبلا از جک رشوه گرفته بود ارتباط از خارج زندان به داخل را نبست!
بنابراین جک نمیتواند مختصات مینها را برای شما بفرستد پس از شما میخواهد تابعی پیاده سازی کنید که جواب مسئله را بدهد. یعنی در این سوال شما اجازه خواندن از ورودی یا نوشتن در خروجی را ندارید. شما باید توابع زیر را پیاده سازی کنید و جک از آنها استفاده میکند. همچنین برنامه شما نباید تابع main داشته باشد.
در صورت هرگونه تلاش برای خواندن از ورودی یا نوشتن در خروجی یا استفاده از تابع exit نمره شما صفر میشود.
void init(int n, int q)
شما باید این تابع را پیادهسازی کنید. در ابتدای فرایند این تابع تنها یک بار صدا زده میشود و مقادیر $n, q$ را به شما میدهد.
int bomb(int x, int y)
شما باید این تابع را پیادهسازی کنید. جک با صدا زدن این تابع به شما مختصات یک مین جدید را میدهد. خروجی این تابع باید بیشترین تعداد مسیر فرار ممکن با اطلاعات فعلی باشد.
ارزیاب نمونه در خط اول اعداد $n,q$ را به ترتیب میخواند.
سپس $q$ خط دیگر میخواند که در هر کدام ابتدا عدد $x$ و سپس $y$ آمده است. هر خط نشان دهنده یک کوئری انفجار مین است.
ورودی نمونه | خروجی نمونه |
---|---|
5 7 4 1 3 2 2 3 3 3 3 4 1 4 4 5 | 2211100 |
6 6 3 1 2 3 3 3 4 3 5 3 5 2 | 222222 |
9 18 6 6 3 4 3 1 6 8 3 2 6 4 3 5 6 7 3 3 3 7 6 5 6 3 6 9 3 6 2 5 4 1 7 6 1 5 | 222222222222221110 |