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

روی یک میز \(2n\) سکه داریم. \(n\) سکه در بالای میز با شماره‌های ۱ تا \(n\) و \(n\) سکه در پایین میز با شماره‌های ۱ تا \(n\) قرار دارند. می‌دانیم تعدادی (شاید صفر) از سکه‌ها تقلبی، و بقیه‌ی سکه‌ها اصل هستند. سکه‌های اصل با هم، و سکه‌های تقلبی باهم، هم‌وزن هستند. همچنین می‌دانیم وزن سکه‌های تقلبی کمتر از وزن سکه‌های اصلی است.

شکل اصلی

برای هر \(i\) و \(j\)، وزن سکه‌ی \(i\)ام از طرف بالا میز را با سکه‌ی \(j\)ام از طرف پایین میز مقایسه کردیم و در صورتی که:

  • وزن سکه‌ی \(i\) بالا، کمتر سکه‌ی \(j\) پایین بود علامت <
  • وزن سکه‌ی \(i\) بالا، بیشتر سکه‌ی \(j\) پایین بود علامت >
  • وزن سکه‌ی \(i\) بالا، برابر سکه‌ی \(j\) پایین بود علامت =

را در سطر \(i\)ام ستون \(j\)ام یک جدول \(n \times n\) نوشته‌ایم.

حال می‌خواهیم از روی این جدول مشخص کنیم کدام سکه‌ها اصل و کدام سکه‌ها تقلبی هستند. ممکن است در جدول داده شده، تناقضی وجود داشته باشد و یا نتوانیم با کمک این داده‌ها وضعیت را به صورت یکتا مشخص کنیم. از شما می‌‌خواهیم برنامه‌ای بنویسید که این سه حالت را شناسایی کرده و نتیجه را اعلام کند.

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

ورودی

در سطر اول ورودی، عدد صحیح و مثبت \(n\) به شما داده می‌شود. \[1 \leq n \leq 2 \,,000\]

در \(n\) سطر بعدی، در هر سطر \(n\) کاراکتر داده می‌شود که یکی از <، = یا > است. یعنی سکه‌ی \(i\)ام از \(j\)ام کوچکتر (<)، بزرگ‌تر‍ (>) یا مساوی (=) است.

خروجی

اگر اطلاعات داده شده تناقض دارند عبارت invalid، در غیراین‌صورت اگر نمی‌توانستیم به‌صورت یکتا وضعیت تقلبی یا اصل بودن را شناسایی کنیم عبارت not unique و در غیراین‌صورت در دو سطر، در هر سطر یک رشته از 0 (تقلبی) و 1 (اصل) به طول \(n\) چاپ کنید که به ترتیب وضعیت تقلبی یا اصل بودن سکه‌‌های بالای و پایین میز را نشان می‌دهد.

مثال‌ها

ورودی نمونه ۱

4
<=<<
<=<<
=>==
<=<<

خروجی نمونه ۱

0010
1011

توضیح نمونه ۱

اگر وزن ۴ سکه‌ی بالا را با \(u_1, u_2, u_3, u_4\,\) و ۴ سکه‌ی پایین را با \(d_1, d_2, d_3, d_4 \,\) نشان دهیم. داده‌های جدول بالا به صورت زیر هستند:

\[ \begin{array}{cccc} u_1 \lt d_1 & u_1 = d_2 & u_1 \lt d_3 & u_1 \lt d_4 \\ u_2 \lt d_1 & u_2 = d_2 & u_2 \lt d_3 & u_2 \lt d_4 \\ u_3 = d_1 & u_3 \gt d_2 & u_3 = d_3 & u_3 = d_4 \\ u_4 \lt d_1 & u_4 = d_2 & u_4 \lt d_3 & u_4 \lt d_4 \\ \end{array} \]

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

شکل نمونه ۱

ورودی نمونه ۲

3
=<<
<=<
<<=

خروجی نمونه ۲

invalid

توضیح نمونه ۲

هر دو سکه‌ی ۱ (بالا و پایین)، ۲ و ۳ باهم هم‌وزن هستند. پس می‌توانیم وزن آن‌ها را با \(w_1\)، \(w_2\) و \(w_3\) نشان دهیم.

می‌دانیم سکه‌ی ۱ (بالا) از سکه‌ی ۲ (پایین) سبک‌تر است (\(w_1 \lt w_2\)). سکه‌ی ۲ (بالا) از سکه‌ی ۱ (پایین) سبک‌تر است (\(w_2 \lt w_1\)). و این تناقض است و پاسخ invalid می‌شود.

ورودی نمونه ۳

1
=

خروجی نمونه ۳

not unique

توضیح نمونه ۳

در این حالت دو سکه داریم، سکه‌ی ۱ بالا و سکه‌ی ۱ پایین و می‌دانیم آن‌ها هم‌وزن هستند. ممکن است هر دو تقلبی و یا هر دو اصل باشند. پس نمی‌توان وضعیت آن‌ها را یکتا مشخص کرد و پاسخ not unique می‌شود.

ارسال پاسخ برای این سؤال
فایلی انتخاب نشده است.