Skip to content

Latest commit

 

History

History
87 lines (67 loc) · 2.82 KB

standard-parentheses.md

File metadata and controls

87 lines (67 loc) · 2.82 KB
  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

یک پرانتزگذاری استاندارد، پرانتزگذاری‌ای است که بتوان در آن به‌گونه‌ای علائم ریاضی را قرار داد که یک عبارت جبری معنادار ساخته شود. برای مثال (())()() یک پرانتزگذاری استاندارد است، اما ()))( یک پرانتزگذاری استاندارد نیست.

در این سؤال از شما می‌خواهیم با داشتن $n$ پرانتزگذاری، تمام پرانتزگذاری‌های استاندارد ممکن را که از الحاق آنها به هم (به ترتیب آمدن آنها در ورودی) ساخته می‌شوند بیابید و آنها را به‌ترتیب طولشان چاپ کنید. در صورت برابر بودن طول رشته‌های ساخته شده آنها را بر اساس ترتیب کتابخانه‌ای (Lexicographic Order) چاپ کنید.

برای فهم بهتر سؤال، مثال‌ها و توضیحات آنها را بررسی کنید.

ورودی

در خط اول عدد صحیح $n$ داده می‌شود و در هر کدام از $n$ خط بعدی پرانتزگذاری‌ای با طول $k_i$ داده می‌شود.
$$1 \le n \le 15$$ $$1 \le k_i \le 100$$

خروجی

در خروجی طبق خواسته سؤال پرانتزگذاری‌های استاندارد مذکور را در خطوط مجزا چاپ کنید.

مثال

ورودی نمونه ۱

4
()()(())
))
()
((

خروجی نمونه ۱

()
()()(())
()()(())()

رشته‌های اول و سوم خود استاندارد هستند پس جزو جواب‌ها می‌باشند. تنها رشته استاندارد دیگر از الحاق رشته اول و سوم به‌دست می‌آید.

دقت کنید که با وجود اینکه رشته‌هایی مانند (()) و ()()()(()) نیز می‌توانند از الحاق رشته‌های ورودی به هم به‌دست آیند و استاندارد هم هستند اما چون به ترتیب آمدن در ورودی الحاق نشده‌اند جزو جواب‌ها محسوب نمی‌شوند.

ورودی نمونه ۲

4
((()
))
))()
()()

خروجی نمونه ۲

()()
((()))
((()))()
((()))()()
((()))()()()

ورودی نمونه ۳

4
(
(
)
)

خروجی نمونه ۳

()
()
()
()
(())

رشته‌های تکراری ساخته شده را نیز مانند این مثال چاپ کنید.