سلام دوست عزیز😃👋

به «مسابقه‌ دانشگاه گیلان» خوش آمدی!

هرگونه ارتباط با سایر شرکت‌کنندگان و یا استفاده از ابزارهای تولید کد، مثل chatGPT و... در مسابقات کوئرا ممنوع است و بعد از شناسایی از لیست شرکت‌کنندگان مسابقه حذف می‌شوید.

لینک‌های مفید برای شرکت در مسابقه:

سوالات و مشکلات خودتان را می‌توانید از طریق قسمت «سوال بپرسید» با ما در میان بگذارید.

موفق باشید و بهتون خوش بگذره 😉✌

لیست سوالات را می‌توانید از نوار سمت راست این صفحه مشاهده کنید.

هافمن و هافتو


  • محدودیت زمان: ۲ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

روش هافمن یک الگوریتم برای فشرده‌سازی براساس احتمال تکرار کلمات است. این روش به هر حرف یک رشته‌ی باینری (رشته‌ای از 0 و 1) متناظر می‌کند و به‌جای رشته‌ای از آن کلمات می‌توانیم از آن رشته‌ها استفاده کنیم.

نکته‌ی مهم در این فشرده‌سازی این است که برای هر رشته‌ی فشرده شده، فقط یک روش برای جایگذاری کلمات اصلی داشته باشد تا بازسازی متن اصلی ممکن باشد.

حال هافتو می‌خواد رشته‌های s1,s2,,sns_1, s_2, \dots, s_n\, به‌جای کلمات قرار دهد اما مطمئن نیست که روش فشرده‌سازی او هم مثل هافم بدون ابهام است.

از شما می‌خواهیم برنامه‌ای بنویسید که بررسی کنید آیا این رشته‌ها برای فشرده‌سازی بدون ابهام هستند و یا طول کوتاه‌ترین رشته‌ای که اگر با آن بازسازی کنیم ابهام پیش می‌آید را چاپ کنید.

ورودی🔗

در سطر اول ورودی، عدد صحیح و مثبت nn آمده که تعداد رشته‌ها را نشان می‌دهد. 1n10001 \leq n \leq 1000

در nn سطر بعدی، در هر سطر یک رشته داده می‌شود.

1si161 \leq |s_i | \leq 16

خروجی🔗

درصورتی که این کلمات ابهامی ندارند، رشته‌ی YES و در غیر این صورت رشته‌ی NO را در سطر اول و در سطر بعدی، طول کوتاه‌ترین رشته‌ی دودویی که برای این متناظر کردن ابهام دارد را چاپ کنید.

مثال‌ها🔗

ورودی نمونه ۱🔗

3
010
101
01
Plain text

خروجی نمونه ۱🔗

NO
6
Plain text

ورودی نمونه ۲🔗

5
1
10
100
1000
10000
Plain text

خروجی نمونه ۲🔗

YES
Plain text
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.