- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
علی که در روز پیش توانسته بود یک سیستم برای شبیه سازی لیگ فوتبال طراحی کند، حسابی مغرور شده است و به تواناییهای خود میبالد. حال میخواهد یک سیستم دیگر برای اعتبارسنجی رشتهها پیاده سازی کند، اما به دلیل خستگی زیاد پروژهی قبلی، نمیخواهد سیستمش زیادی پیچیده باشد!
این سیستم در ابتدا یک عدد به عنوان میزان خوبی دارد که مقدارش برابر با صفر میباشد.
همچنین برای شروع کار، یک رشته متشکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای # و ! و ? و . به طول حداکثر ۱۰۰۰ داده میشود. همچنین توجه کنید که رشته شامل فاصله (space) نمیباشد. این رشته را رشتهی مشکوک مینامیم.
حال عملیاتهایی وجود دارند که بر روی این رشته اعمال میشوند و با آن میتوان میزان اعتبار رشته را تشخیص داد.
دستور copy
copy key count
در این دستور، key یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای # و ! و ? و . میباشد و count یک عدد طبیعی میباشد.
با استفاده از این دستور، شما باید رشتهی key را به اندازهی count مرتبه به خود بچسبانید (یعنی اگر key برابر با ab باشد و count برابر با ۳ باشد، رشتهی به دست آمده برابر با ababab میشود) و سپس اگر رشتهی نهایی، طولش $k$ باشد، باید $k$ حرف اول (سمت چپ) رشتهی مشکوک را حذف کنید و این رشتهی جدید را به ابتدای رشتهی مشکوک بچسبانید.
همچنین تضمین میشود در صورتی که key را به اندازهی count مرتبه به خودش بچسبانیم، طولش کمتر مساوی طول رشتهی مشکوک باشد.
برای مثال اگر رشتهی مشکوک برابر با aaabbbccc باشد و دستور زیر داده شود:
copy zx 2
رشتهی مشکوک برابر با zxzxbbccc میشود.
دستور compare
compare key
در این دستور، key یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای # و ! و ? و . میباشد.
شما باید رشتهی مشکوک را با رشتهی key مقایسه کنید و در صورتی که این دو رشته با یکدیگر برابر باشند، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
دستور substr
substr key count
در این دستور، key یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای # و ! و ? و . میباشد و count یک عدد طبیعی میباشد.
در صورتی که رشتهی key دقیقا count مرتبه به عنوان زیررشته در رشتهی مشکوک ظاهر شده باشد، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
دستور attach
attach key count str
در این دستور، key و str یک رشته مشتکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای # و ! و ? و . میباشند و count یک عدد طبیعی میباشد.
شما باید رشتهی str را به انتهای رشتهی key بچسبانید و در صورتی که رشتهی بدست آمده دقیقا count مرتبه به عنوان زیررشته در رشتهی مشکوک ظاهر شده باشد، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
برای مثال اگر رشتهی مشکوک برابر با abc باشد و دستور زیر داده شود، یک واحد به میزان خوبی افزوده میشود:
attach a 1 b
دستور length
length count
در این دستور count یک عدد طبیعی میباشد. در صورتی که طول رشتهی مشکوک دقیقا برابر با count باشد، میزان خوبی به اندازهی یک واحد افزایش پیدا میکند و در غیر اینصورت تغییری نمیکند.
انتهای برنامه
همچنین هنگامی که تمامی دستورها داده شوند، در انتها یک دستور به صورت Is it right or not? داده میشود که از شما میپرسد آیا رشتهی مشکوک دارای اعتبار میباشد یا خیر.
در صورتی که میزان خوبی بیشتر و یا مساوی نصف تعداد دستورات داده شده باشد (دستورات copy و compare و substr و attach و length)، رشته دارای اعتبار است و باید Eyval را چاپ کنید و در غیر اینصورت دارای اعتبار نمیباشد و باید HeifShod را چاپ کنید.
ورودی
در خط اول ورودی، رشتهی مشکوک داده میشود که متشکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای # و ! و ? و . میباشد و طول آن حداکثر ۱۰۰۰ است.
در خطوط بعدی، در هر خط یکی از دستوراتی که در صورت سوال آمدهاند داده میشود. تعداد این دستورها کمتر از ۱۰۰۰ میباشد.
در خط نهایی، یک عبارت با عنوان Is it right or not? میآید که توضیح آن در صورت سوال داده شده است.
خروجی
در تنها خط خروجی، در صورتی که رشتهی مشکوک دارای اعتبار باشد باید عبارت Eyval و در غیر اینصورت عبارت HeifShod را چاپ کنید.
مثال
ورودی نمونه
eyval!inTamrinkheiliSadast.Hooorrraaaaa
copy hi 3
compare hihihiinTamrinkheiliSadast.Hooorrraaaaa
substr aaa 3
attach hi 2 in
length 39
Is it right or not?
خروجی نمونه
Eyval
در این مثال، فقط در هنگام اجرای دستور attach میزان خوبی اضافه نمیشود.
ارسال پاسخ برای این سؤال