روزی ۳۰ علامت شارپ (#
) برای یادگرفتن زبان سیشارپ راهی کوه قاف شدند. پس از طی کردن مراحلی سخت، در بالای کوه، آبی را یافتند. آنها تصویر خود را در آن آب دیدند و فهمیدن که خودشان سیشارپ هستند!
حال فرض کنید شارپ، کنار هم قرار گرفتهاند. ( کاراکتر #
) از شما میخواهیم تصویری که آنها در آب میبینند را چاپ کنید.
برای مثال اگر ۳ شارپ در کنار هم باشند، تصویر آنها به صورت ###
در آب دیده میشود. و اگر ۵ شارپ در کنار هم باشند، تصویر آنها به صورت #####
در آب دیده میشود.
در سطر اول ورودی، عدد صحیح میآید.
در تنها سطر خروجی، تصویری که شارپ در آب میبینند را چاپ کنید.
شاخصهای مختلف و متنوعی برای ردهبندی اساتید از نظر پژوهشی وجود دارد. یکی از شاخصهای معروف h-index
نام دارد.
در هر مقاله تعدادی ارجاع به مقالات دیگر بهعنوان منبع وجود دارد. یک مقاله ارزشمندتر است اگر تعداد مقالاتی که به آن ارجاع میدهند بیشتر باشد. چون منبع بهتری بوده و باعث پیشرفت کار تعداد بیشتری از اساتید شدهاست. این عدد تعداد ارجاع (citation
) نام دارد و برای هر مقاله بهصورت مستقل قابل محاسبه است.
حال فرض کنید یک استاد، مقاله منتشر کرده است و مقالهی ام بار بهعنوان منبع مقالات دیگر استفاده شده است. عدد h-index
این استاد برابر است اگر حداقل مقاله داشته باشد، که حداقل بار بهعنوان منبع به آن ارجاع داده باشند. اگر چند این ویژگی را دارد، بزرگترین آن را در نظر میگیرند.
در سطر اول ورودی یا تعداد مقالات میآید و در سطر بعد عدد میآید که ـمین آنها یا تعداد ارجاعات به مقاله ـم است.
در تنها خط خروجی h_index
استاد مطلوب است.
زیرمسئله | امتیاز |
---|---|
۱۰۰ | |
بدون محدودیت اضافه | ۱۰۰ |
در این نمونه، ۳ عدد داریم که بزرگتر یا مساوی ۳ هستند (اعداد ۵، ۳ و ۴)
در این نمونه، ۴ عدد داریم که بزرگتر یا مساوی ۴ هستند (اعداد ۱۳، ۵، ۲۱ و ۸)
جدول کودوکو تعمیم جدول سودوکو است. یک جدول است. که از بلوکهای در یک جدول تشکیل شده است. برای مثال شکل زیر، جدول کودوکو در حالت و است.
بازی جدول کودوکو دو نفره است. این دو نفر در ابتدا یک جدول کودوکو خالی روی میز قرار میدهند. بازی بین این دو نفر به نوبت انجام میشود. هر کس در نوبت خود یک عدد در یکی از خانههای خالی جدول مینویسد طوری که جدول معتبر بماند. کسی که نتواند چنین کاری را انجام دهد بازنده بازی است.
جدول معتبر میماند اگر هر دو عدد مساوی در سطر، ستون و بلوک متفاوت قرار گیرند.
از شما میخواهیم این بازی را شبیهسازی کنید. یعنی ابعاد بازی و حرکات بازیکنها به شما داده میشود. از شما میخواهیم بعد از انجام هر حرکت بگویید:
توجه کنید بعد از انجام یک حرکت اشتباه، نوبت همان بازیکنی است که حرکت اشتباه انجام داده است.
همچنین نیازی نیست جدول تکمیل شود و ممکن است بدون اینکه همه خانههای خالی جدول پر شود بازی به اتمام برسد.
در سطر اول دو عدد و به ترتیب میآید. در سطر دوم عدد صحیح آمده است که نشان دهندهی تعداد اتفاقاتی است که در بازی افتاده است. سپس در سطر بعدی در هر سطر سه عدد و و آمده که نشاندهنده این است که این بازیکن میخواهد در خانه سطر ام ستون ام عدد را بنویسید. توجه کنید با توجه به قوانین بازی، نوبتها به صورت یکتا مشخص میشود.
برای هر دستور اگر این دستور نشاندهنده حرکت نفر اول است پیام player 1
و در صورتی که نشاندهنده حرکت نفر دوم است پیام player 2
را در یک سطر مجزا چاپ کنید.
برای هر دستور در صورت غیر مجاز بودن این حرکت، پیام خطای مربوطه را چاپ کنید و در غیر این صورت مشابه مثالهای نمونه وضعیت جدول را چاپ کنید.
فاصله ها باید مطابق نمونه باشد.
روی محور اعداد، بازه داریم. هر بازه به یکی از ۸ حالت زیر است:
به شما بازه که به یکی از ۸ حالت بالا است داده میشود. از شما میخواهیم اجتماع این بازه را به روش استاندارد نمایش دهید.
منظور از نمایش استاندارد یعنی تعدادی بازه ناتهی از ۸ حالت بالا انتخاب کنید و پشت سرهم بنویسید به طوری که هیچ دوتایی اشتراک نداشته باشند. برای کنار هم گذاشتن دو بازه از نماد U
(اجتماع) استفاده کنید. (برای بهتر متوجه شدن خواستهی سوال، به مثالها توجه کنید.)
در سطر اول ورودی، عدد صحیح و مثبت آمده که تعداد بازهها را نشان میدهد.
در سطر بعدی، در هر سطر یک بازه از ۸ نوع معرفی شده به شما نمایش داده میشود. تضمین میشود بازههای داده شده درست و ناتهی هستند. مقدار بینهایت () در ورودی به صورت inf
نمایش داده میشود.
تمامی اعداد حاضر در ورودی کوچکتر مساوی هستند.
زیرمسئله | امتیاز |
---|---|
۱۵۰ | |
بدون محدودیت اضافه | ۱۵۰ |
اجتماع این بازهها را به روش استاندارد چاپ کنید. دقت کنید بازههای خروجی باید مرتب باشند.
میخواهیم سیستم پیشخوان یک رستوران را پیادهسازی کنیم. در این رستوران دستور داده میشود که از شما میخواهیم آنها را مدیریت کنید.
منوی غذایی که از آن سفارش میدهند غذای مختلف دارد که اسم و قیمت آنها به شما داده میشود.
تعداد میزهای رستوران برابر است که آنها را با اعداد تا شمارهگذاری میکنیم. تعداد صندلیهای دور میز ام برابر است. در ابتدا فرض کنید در ابتدا همهی میزها آمادهی ارائهی سرویس هستند.
ساختار کلی این دستور به شکل زیر است.
در این درخواست مشتری سفارش تعدادی غذا میدهد و ما باید به این سفارش رسیدگی کنیم. رشتهی <food_i>
() از دو قسمت نام غذا و تعداد سفارش تشکیل شده که این دو قسمت با یک کاراکتر X
از هم جدا شدهاند. (به مثالها مراجعه کنید.) در جای <seat>
یک عدد به شما داده میشود و یعنی یک میز با حداقل این تعداد صندلی نیاز دارند. این سفارش در لحظهی <timestamp>
آمده است.
اگر چنین میزی در رستوران نداریم، پیام not enough seat.
را چاپ کنید. (این سفارشها نباید شماره بخورند و پذیرفته شوند.) ولی اگر میزی با حداقل این تعداد صندلی در رستوران موجود است، باید این سفارش را شماره بزنید و ثبت کنید.
شمارهی میزی را به این مشتری تخصیص دهید که حداقل تعداد صندلی مورد نیاز این مشتری را برطرف کند. همچنین این میز باید آماده ارائه سرویس شده باشد. اگر چندمیز با این ویژگیها وجود داشت، میز با کمترین شماره را در قالب یک پیام please sit at table number <t>.
اعلام کنید. ( شمارهی میز مورد نظر است.)
اگر چنین میزی در رستوران بود ولی در این لحظه آماده ارائه سرویس نبود، پیام please wait for free table.
را اعلام کنید و این مشتری را به لیست انتظار اضافه کنید.
ساختار کلی این دستور به شکل زیر است. (مواردی که داخل <>
قرار دارند ورودی داده میشوند.)
در اینجا مشتری که سفارش شمارهی <idx>
را داده بود میخواهد از رستوران خارج شود. شما باید مجموع هزینه را به او اعلام کنید و آن مشتری پرداخت میکند.
اگر این مشتری هنوز غذایش را نخورده و در صف انتظار میز خالی است، پولی از آن دریافت نکنید و پیام pays after eating.
را چاپ کنید.
همچنین به پرسنل رستوران اعلام میکنید که میزی که این سفارش را داده بودند، آمادهی سرویس کنند. این آماده کردن ۲ دقیقه طول میکشد. شما بعد از ۲ دقیقه اولین سفارشی که هنوز منتظر است و میتواند از آن میز استفاده کند را به میزش هدایت کنید و از صف انتظار خارج کنید.
در این گزارش از شما میخواهیم وضعیت یک سفارش را در لحظهی <timestamp>
پیگیری کنید.
WAITING
را چاپ کنید.EATING
را چاپ کنید.DONE
را چاپ کنید.در اینجا گزارش وضعیت یک میز را در لحظهی <timestamp>
پیگیری کنید.
FREE
را چاپ کنید.PENDING
را چاپ کنید.BUSY
را چاپ کنید.در این گزارش از شما میخواهیم موارد زیر را در لحظهی <timestamp>
حساب و به صورت ۸ عدد که با یک فاصله از هم جدا شدهاند چاپ کنید.
<>
قرار دارند، باید مقدار آنها را در نظر بگیرید و در بقیه موارد همان کاراکترها را در نظر بگیرید.<timestamp>
در قالب hh:mm:ss
داده میشود. در واقع فرض کنید همهی سفارشها در یک روز میآیند و تمام میشوند.در سطر اول ورودی، سه عدد صحیح ، و داده میشود که به ترتیب نشان دهندهی تعداد اتفاقات، غذاها و میزها است.
در سطر بعدی، در هر سطر یک رشته و یک عدد که با یک فاصله از هم جدا شدهاند داده میشود. تضمین میشود رشتهی تنها شامل حروف کوچک انگلیسی است.
در سطر بعدی، عدد صحیح در یک ردیف داده میشود که با یک فاصله از هم جدا میشوند. عدد ام با است و نشان دهندهی تعداد صندلیهای میز ام است.
در سطر بعدی، یکی از درخواستهای بالا با فرمت گفته شده داده میشود. تضمین میشود همهی ورودیها به ترتیب زمانی داده میشوند.
زیرمسئله | امتیاز |
---|---|
فقط دو دستور اول در ورودی داده میشود | ۲۰۰ |
بدون محدودیت اضافه | ۲۰۰ |
خروجیهای درخواستهای بالا را در یک سطر مجزا چاپ کنید.
در منوی رستوران، سه غذای «پیتزا»، «برگر» و «پاستا» وجود دارد که قیمت هر کدام از آنها بهترتیب ۱۲۰، ۸۰ و ۷۰ هزار تومان است.
این رستوران ۴ میز دارد که دور میز اول، ۲ صندلی، دور میز دوم، ۱ صندلی، دور میز سوم ۴ صندلی و دور میز چهارم ۲ صندلی وجود دارد.
در منوی رستوران، چهار غذای «جوجه»، «کوبیده»، «سلطانی» و «نگینی» وجود دارد که قیمت هر کدام از آنها بهترتیب ۶۰، ۷۰، ۸۰ و ۷۵ هزار تومان است.
این رستوران ۲ میز دارد که دور میز اول، ۲ صندلی و دور میز دوم، ۴ صندلی وجود دارد.
در منوی رستوران، فقط غذای «املت» وجود دارد که قیمت آن ۱۰ هزار تومان است. این رستوران فقط یک میز دارد که دور میز آن ۱ صندلی وجود دارد.