- محدودیت زمان: ۱ ثانیه
- محدودیت حافظه: ۲۵۶ مگابایت
علی که در روز پیش توانسته بود یک سیستم برای شبیه سازی لیگ فوتبال طراحی کند، حسابی مغرور شده است و به تواناییهای خود میبالد. حال میخواهد یک سیستم دیگر برای اعتبارسنجی رشتهها پیاده سازی کند، اما به دلیل خستگی زیاد پروژهی قبلی، نمیخواهد سیستمش زیادی پیچیده باشد!
این سیستم در ابتدا یک عدد به عنوان میزان خوبی دارد که مقدارش برابر با صفر میباشد.
همچنین برای شروع کار، یک رشته متشکل از حروف کوچک و بزرگ انگلیسی و کاراکترهای #
و !
و ?
و .
به طول حداکثر ۱۰۰۰ داده میشود. همچنین توجه کنید که رشته شامل فاصله (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
میزان خوبی اضافه نمیشود.
ارسال پاسخ برای این سؤال