نقشه کشور کدکاپ از بالا به صورت یک جدول است. یعنی این کشور، به شهر تقسیم میشود.
به یک شهر کدکاپ، مرزی میگوییم اگر یکی از دیوارهای آن به سمت بیرون کشور باشد. از شما میخواهیم برنامهای بنویسید که با دریافت و ، تعداد شهرهای مرزی کدکاپ را حساب کند.
در سطر اول ورودی، عدد صحیح و مثبت داده میشود.
در سطر دوم ورودی، عدد صحیح و مثبت داده میشود.
در تنها سطر خروجی، یک عدد صحیح که نشاندهندهی تعداد شهرهای مرزی کدکاپ را چاپ کنید.
در این نمونه، شهرهای کدکاپ، مانند شکل زیر، به صورت یک جدول هستند که ۱۰ شهر مرزی (شهرهایی که به بیرون جدول راه دارند) آن با خانههای ویلایی مشخص شدهاند.
در این نمونه، شهرهای کدکاپ، مانند شکل زیر، به صورت یک جدول هستند که همهی شهرهای آن مرزی (شهرهایی که به بیرون جدول راه دارند) هستند.
در این نمونه، شهرهای کدکاپ، مانند شکل زیر، به صورت یک جدول هستند و فقط یک شهر دارد و همان شهر هم مرزی (شهری که به بیرون جدول راه دارد) است.
نیازی نیست چک کنید شرایط گفته شده در ورودی برقرار است یا نه. توضیحات محدودیتها فقط برای آگاهی شما دربارهی تستها و محدودیتهای مسئله است و قطعاً در ورودیهای داده شده به برنامهی شما رعایت میشوند. پس نیازی نیست بنویسید:
شما میتوانید لابهلای دریافت ورودی، خروجی دهید. پس نیازی نیست ابتدا همهی ورودیها را دریافت کنید و در نهایت همهی خروجیها را چاپ کنید. مخصوصاً برای سوالاتی که باید به چندین سوال پاسخ دهید، میتوانید دو قسمت ورودی و خروجی را کاملاً مستقل در نظر بگیرید و مطمئن باشید تداخلی پیش نمیآید.
لطفاً از چاپ کردن موارد اضافه مثل please enter a number
برای دریافت ورودی پرهیز کنید. برای مثال در زبان پایتون نباید بنویسید:
برای زبانهایی مثل جاوا نباید در بالای کد شما آدرس پکیج داده شود. برای مثال در بالای کد خود نباید بنویسید:
Scanner
برای دریافت ورودی
در زبان جاوا، باید فقط یک شئ از جنس Scanner
تعریف کنید و همهی ورودیها را با آن دریافت کنید.
برای آشنایی بیشتر برای نحوهی دریافت ورودی و چاپ کردن خروجی این لینک را مطالعه کنید.
روی یک میز سکه داریم. سکه در بالای میز با شمارههای ۱ تا و سکه در پایین میز با شمارههای ۱ تا قرار دارند. میدانیم تعدادی (شاید صفر) از سکهها تقلبی، و بقیهی سکهها اصل هستند. سکههای اصل با هم، و سکههای تقلبی باهم، هموزن هستند. همچنین میدانیم وزن سکههای تقلبی کمتر از وزن سکههای اصلی است.
برای هر و ، وزن سکهی ام از طرف بالا میز را با سکهی ام از طرف پایین میز مقایسه کردیم و در صورتی که:
<
>
=
را در سطر ام ستون ام یک جدول نوشتهایم.
حال میخواهیم از روی این جدول مشخص کنیم کدام سکهها اصل و کدام سکهها تقلبی هستند. ممکن است در جدول داده شده، تناقضی وجود داشته باشد و یا نتوانیم با کمک این دادهها وضعیت را به صورت یکتا مشخص کنیم. از شما میخواهیم برنامهای بنویسید که این سه حالت را شناسایی کرده و نتیجه را اعلام کند.
برای بهتر متوجه شدن سوال، نمونهها را مطالعه کنید.
در سطر اول ورودی، عدد صحیح و مثبت به شما داده میشود.
در سطر بعدی، در هر سطر کاراکتر داده میشود که یکی از <
، =
یا >
است. یعنی سکهی ام از ام کوچکتر (<
)، بزرگتر (>
) یا مساوی (=
) است.
اگر اطلاعات داده شده تناقض دارند عبارت invalid
، در غیراینصورت اگر نمیتوانستیم بهصورت یکتا وضعیت تقلبی یا اصل بودن را شناسایی کنیم عبارت not unique
و در غیراینصورت در دو سطر، در هر سطر یک رشته از 0
(تقلبی) و 1
(اصل) به طول چاپ کنید که به ترتیب وضعیت تقلبی یا اصل بودن سکههای بالای و پایین میز را نشان میدهد.
اگر وزن ۴ سکهی بالا را با و ۴ سکهی پایین را با نشان دهیم. دادههای جدول بالا به صورت زیر هستند:
سکههای تقلبی با رنگ نارنجی و سکههای اصل با رنگ زرد در تصویر زیر مشخص شدهاند. این تنها حالت ممکن برای تقلبی یا اصل بودن سکهها است و نتیجه مقایسهها هم همین را نشان میدهد.
هر دو سکهی ۱ (بالا و پایین)، ۲ و ۳ باهم هموزن هستند. پس میتوانیم وزن آنها را با ، و نشان دهیم.
میدانیم سکهی ۱ (بالا) از سکهی ۲ (پایین) سبکتر است (). سکهی ۲ (بالا) از سکهی ۱ (پایین) سبکتر است (). و این تناقض است و پاسخ invalid
میشود.
در این حالت دو سکه داریم، سکهی ۱ بالا و سکهی ۱ پایین و میدانیم آنها هموزن هستند. ممکن است هر دو تقلبی و یا هر دو اصل باشند. پس نمیتوان وضعیت آنها را یکتا مشخص کرد و پاسخ not unique
میشود.
یک ساعت شنی داریم که اگر همهی شنهای داخل آن کاملاً در سمت بالا باشد، دقیقه طول میکشد تا شنها به قسمت پایین منتقل شوند. ما این ساعت شنی را در لحظهی ۰ روی میز قرار دادیم و راس دقیقهی این ساعت شنی را روی میز بر میداریم. در لحظهی ۰ همهی شنها در قسمت بالایی ساعت قرار دارد.
همچنین لحظه از قبل به ما داده شده و میتوانیم در این لحظهها ساعت شنی را برعکس کنیم، یا هیچ تغییری ندهیم. (در بقیه لحظهها این کار ممکن نیست.) میخواهیم طوری این فرآیند را انجام دهیم که هیچ یک دقیقهی متوالی در این دقیقه پیش نیاید که ساعت شنی روی میز باشد و همهی شنهایش به قسمت پایین رفته باشد و حرکتی نکند (توجه کنید یک لحظه خالی شدن مهم نیست). از شما میخواهیم برنامهای بنویسید که بررسی کند آیا میتوانیم این کار را انجام دهیم یا خیر؟
برای بهتر متوجه شدن سوال، به توضیح نمونهها توجه کنید.
در سطر اول ورودی، عدد صحیح آمده که تعداد تستهای یک ورودی را نشان میدهد.
در سطر اول هر تست سه عدد صحیح ، و با فاصله از هم داده میشوند.
در سطر دوم هر تست عدد صحیح داده میشود.
برای هر تست، در صورتی که این کار شدنی است YES
و در غیر این صورت NO
چاپ کنید.
در تست اول، دقیقه طول میکشد تا ساعت شنی کاملاً خالی شود. ساعت شنی را در دقیقهی ۰ روی میز قرار میدهیم و در دقیقهی از روی میز بر میداریم. در دقیقههای و میتوانیم ساعت شنی را برعکس کنیم.
اگر در لحظهی برعکس کنیم هیچ وقت ساعت یک دقیقه متوالی بیحرکت نخواهد بود. چون از دقیقهی ۰ تا ۶ در حال خالی شدن است و درست در همان لحظه، ساعت برعکس میشود و در دقیقهی ۱۰، هنوز به اندازهی ۲ دقیقه شن دارد و هیچوقت ساعت از حرکت نیفتاده است.
در تست اول، دقیقه طول میکشد تا ساعت شنی کاملاً خالی شود. ساعت شنی را در دقیقهی ۰ روی میز قرار میدهیم و در دقیقهی از روی میز بر میداریم. در دقیقهی میتوانیم ساعت شنی را برعکس کنیم.
قبل از رسیدن به اولین زمان ممکن برای تغییر وضعیت ساعت، در بازهی دقیقهی ۱۰ تا ۱۱ ساعت شنی بیحرکت میماند. پس نمیتوانیم به هدفمان برسیم.
در یک مهمانی مهمان حضور دارند. مهمانان این مهمانی کمی عجیبوغریب هستند و هر مهمان تنها با مهمانانی که قد یا وزنشان دقیقاً برابر با اوست حرف میزند! به یک مهمانی بد میگوییم اگر مهمانها را بتوان به دو گروه تقسیم کرد، به طوری که هیچ کسی از گروه اول نتواند با هیچ فردی از گروه دوم حرف بزند. میزبان میخواهد تعدادی مهمان جدید دعوت کند که مهمانی دیگر بد نباشد.
مثلاً اگر مهمانی فقط شامل دو مهمان یکی با قد ۱۵۰ سانتیمتر و وزن ۷۰ کیلوگرم، و دیگری با قد ۱۸۰ سانتیمتر و وزن ۹۰ کیلوگرم باشد، این دو مهمان نمیتوانند با هم صحبت کنند و بنابراین مهمانی بد است. با این حال اگر یک فرد با قد ۱۵۰ سانتیمتر، و وزن ۹۰ کیلوگرم به مهمانی اضافه کنیم، مهمان جدید با هر دو مهمان قبلی میتواند صحبت کند و مهمانی دیگر بد نیست.
میزبان آشنایان خیلی زیادی دارد، در نتیجه با هر قد و وزنی که بخواهد میتواند مهمان دعوت کند. میزبان باید حداقل چند میهمان جدید دعوت کند که میهمانی بد نباشد؟
در سطر اول ورودی، عدد صحیح و مثبت که نشان دهندهی تعداد مهمانان اولیه است داده میشود.
در هر کدام از سطر بعدی، در سطر ام و که نشان دهندهی قد و وزن مهمان ام است داده میشود.
حداقل تعداد مهمان جدیدی که میزبان باید دعوت کند، تا مهمانی بد نباشد را چاپ کنید.
این مثال در متن سوال توضیح داده شده است.
اگر مهمانی با قد ۱ و وزن ۴ به مهمانی اضافه شود، دیگر مهمانی بد نیست.
مهمانی همین الان هم بد نیست!
به یک رشته مثل یک جملهی جبری میگوییم هرگاه فقط از بتوان آن را به دو قسمت مثل تقسیم کرد که یک عدد طبیعی و رشتهای از حروف کوچک انگلیسی باشد. برای مثال رشتههای 3x
و 115ali
عبارت جبری هستند ولی 1x2y
،12
و xy
عبارت جبری نیستند.
حال به شما یک رشته به طول مثل از حروف کوچک انگلیسی (کاراکترهای a
تا z
) و ارقام (کاراکترهای 1
تا 9
) داده میشود و از شما درخواست میشود، در خواستها دو نوع دارند:
منظور از زیررشتهی متوالی یک رشته مثل ، رشتهای است که از حذف کردن تعدادی (حتی صفر) کاراکتر از ابتدا و انتهای آن بدست بیاید. برای مثال ode
، cup
زیررشتهی متوالی codecup
است ولی ccup
و puc
زیررشتهی متوالی آن نیست.
در سطر اول دو عدد صحیح و مثبت و داده میشود.
در سطر دوم ورودی رشتهی شامل کاراکتر از حروف کوچک و ارقام به طول داده میشود. در سطر بعدی در هر سطر یا سه عدد 1
و و داده میشود که نشان دهندهی درخواستی از نوع اول است.
یا دو عدد 2
و و کاراکتر c
داده میشود که نشان دهندهی درخواست نوع دوم است.
در سطرهای جداگانه، به ترتیب پاسخ پاسخ درخواستهای نوع اول را چاپ کنید. تضمین میشود حداقل یک درخواست از نوع اول وجود دارد.
در درخواست اول تعداد زیررشتههای جبری 183xa
پرسیده شده که برابر ۶ است (3x
، 3xa
، 83x
، 83xa
، 183x
و 183xa
).
در درخواست دوم رشتهی به 1x3xa11u7z
تبدیل میشود.
در درخواست سوم تعداد زیررشتههای جبری 1x3xa
پرسیده شده که برابر ۳ است (1x
، 3x
و 3xa
).
در درخواست چهارم تعداد زیررشتههای جبری a11u7
پرسیده شده که برابر ۲ است (1u
و 11u
).
در درخواست پنجم رشتهی به 1x3xa11u9z
تبدیل میشود.
در درخواست ششم تعداد زیررشتههای جبری 1x3xa11u9z
پرسیده شده که برابر ۶ است (1x
، 3x
، 3xa
، 1u
، 11u
و 9z
).
یک جدول داریم که در خانهی سطر ام، ستون ام آن عدد حقیقی نوشته شده است. باید هر خانهی این جدول مثل را به یا تبدیل کنیم. باید این تغییرات را طوری انجام دهیم به طوری که جمع سطرها و ستونها تغییر نکند.
از شما میخواهیم برنامهای بنویسید که تشخیص دهد انجام این کار شدنی است یا نه و در صورتی که این کار شدنی است، یک روش انجام این کار ارائه دهید.
در سطر اول ورودی، عدد صحیح و مثبت آمده که تعداد تستها را نشان میدهد.
در سطر اول هر تست، دو عدد صحیح و داده میشود که به ترتیب تعداد سطرها و ستونها جدول را نشان میدهد.
در سطر بعدی، در هر کدام عدد حقیقی که با فاصله از هم جدا شدهاند داده میشود. عدد ام در سطر ام همان است. هر عدد با دقت دقیقاً ۳ رقم بعد از اعشار داده میشود.
برای هر تست، در سطر اول خروجی، در صورتی که انجام عملیاتها ممکن است، YES
و در غیر این صورت NO
را چاپ کنید. برای حالتهایی که انجام عملیاتها ممکن است، یک جدول چاپ کنید که عدد سطر ام ستون ام آن برابر 0
یا 1
است عدد سطر ام ستون ام به ترتیب نشان دهندهی انتخاب یا است.
اگر چند حالت برای رسیدن به جواب وجود دارد، یکی را به دلخواه انتخاب کنید.
در نمونه اول، چون همهی اعداد جدول صحیح هستند، فرقی ندارد که کدام را یا تبدیل کنیم. در هر حال جدول به صورت زیر میشود که جمع سطرها و ستونها ثابت میماند.
در نمونهی دوم، هر طوری که یا بگذاریم، جمع ستون اول عددی صحیح میشود ولی جمع ستون اول اکنون ۱.۵ است که عددی صحیح نیست. پس جمع این ستون را نمیتوانیم ثابت نگه داریم.
در نمونهی سوم میتوانیم صورت زیر عمل میکنیم و جمع سطرها و ستونها ثابت میماند.