در جایجای جهان افرادی پیدا میشوند که مسابقهی برنامهنویسی برگزار میکنندِ. از بین این افراد، تعدادی هم هستند که خیلی مسابقهی برنامهنویسی برگزار میکنند! چنین افرادی بسیار نایاب هستند، اما اگر بتوانید با بیش از یکی از ایشان صحبت کنید، میبینید که ویژگیهای مشترک بسیاری دارند!
این مسابقه نیز توسط تعدادی از این افراد طراحی شده. از ویژگیهایی که این افراد دارند، این است که معمولاً برای سوال سخت مسابقه، سوالهای مبحث "شار بیشینه" (یا "فلو") را میپسندند و بسیار از این تیپ سوالها استفاده میکنند! اما این مسابقه یک مسابقهی معمولی نیست؛ از این جهت برگزارکنندگان دوست داشتند این مسابقه تا جای ممکن متفاوت باشد؛ به همین دلیل سوال آخر مسابقه دیگر مربوط به فلو نیست؛ بلکه مربوط به فلوچارت است! (آری! سطح خلاقیت برگزارکنندگان حقیقتاً ستودنیست.)
روندنما(یا flowchart) یکی از ابتداییترین ابزارهاییست که برای نمایش الگوریتمها و برنامهها بکار میرود. روندنما مانند یک زبان برنامهنویسی است که بصورت تصویری و ساده، برنامه را توصیف میکند. یک نمونه از روندنما را میتوانید در شکل زیر ببینید:
این روندنما در انتها، مقدار ۵ را چاپ میکند.
در این سوال نمونههای سادهای از روندنما مورد بررسی است. فرض کنید در روندنما، چنین ابزارهایی داشته باشیم:
START
و در داخل دایرهی پایان، END
نوشته شده است. هر روندنما شامل دقیقاً یک دایرهی شروع و یک دایرهی پایان است. دایرهی شروع یک مسیر خروجی دارد و دایرهی پایان یک مسیر ورودی.تنها متغیری که در برنامه استفاده میشود، X
است که نیازی به تعریف ندارد و ابتدای برنامه مقدارش برابر ۰ است. دستورهایی که ممکن است در برنامه بیایند عبارتند از:
همچنین شرطهای ممکن عبارتند از:
همچنین فرض کنید که روندنماهای این مسئله، در دور بینهایت نمیافتند و هریک از دستورها حداکثر ۲۰ بار اجرا میشوند.
یک انسان بسادگی میتواند با دیدن چنین روندنمایی، خروجی متناظرش را بدست آورد. حال، آیا شما میتوانید برنامهای بنویسید که چنین کند؟!
برای سادهتر شدن کار، روندنما بصورت تصویر به شما داده نمیشود؛ بلکه بصورت تعدادی رشته داده میشود. روندنماهای این مسئله با دست کشیده شدهاند (مانند مثال بالا). ابتدا شکل آن کشیده شده و تبدیل به تعدادی رشته متشکل از کاراکترهای .
و #
شده که .
نمایانگر رنگ سفید و #
نمایانگر رنگ سیاه است. سپس دستورات و نوشتهها در داخل رشتهها بصورتی که واقعاً نوشته میشوند، اضافه میشوند و ابعاد جدول نیز به در ابتدای ورودی میآید.
در این سوال، بسته به تعداد تستهایی که درست پاسخ دهید نمره میگیرید. برنامهی شما هرچه بهینهتر باشد و برای حالات بیشتری پاسخ درست بدهد، نمرهی بیشتری دریافت خواهد کرد.
ورودی برنامهی شما، یک روندنما به شکل گفتهشده است. جدول آن حداکثر ۵۰۰ سطر و حداکثر ۷۰۰ ستون دارد. شکل روندنما برای انسان کاملاً قابل فهم خواهد بود.
به ازای هر دستور PRINT
که در روندنما اجرا میشود، مقدار مربوطه را در یک سطر جدا چاپ دهید.
ورودی برای شکل داخل صورت سوال در این فایل آمده است.
ورودی برای شکل زیر در این فایل آمده است.