$n$ دسته سنگریزه داریم که در دسته $i$ ام $a_i$ سنگریزه قرار دارد. میدانیم به ازای هر $1 \leq i < n$ داریم $a_i \leq a_{i+1}$.
دو نفر بازی زیر را روی سنگریزهها انجام میدهند:
در صورتی که هر دو بازیکن بهترین بازی خود را انجام دهند ، چه کسی برنده بازی خواهد بود؟
به ازای هر تست، در صورتی که نفر اول برنده بازی خواهد بود عبارت TAK و در غیر این صورت عبارت NIE را چاپ کنید.
ورودي نمونه | خروجي نمونه |
---|---|
2 2 2 2 3 1 2 4 | NIE TAK |
پاسخ
فرض کنید $\lceil \frac{n}{2} \rceil$ عدد به صورت زیر تعریف شده باشند:
در این صورت بازی به شکل زیر خواهد بود:
در هر مرحله هرکس میتواند یا تعداد خاصی به یکی از $b_i$ ها اضافه کند، یا هر تعداد دلخواه از یکی از $b_i$ ها کم کند. هر چند زمانی که تمامی $b_i$ ها برابر با صفر باشد لزوماً پایان بازی نیست اما اگر یکی از بازیکنها بتواند طوری بازی کند که نوبت او حداقل یکی از $b_i$ ها بیشتر از صفر باشد برندهی بازی خواهد بود. (چون در حالت نهایی بازی حتماً تمام $b_i$ ها برابر با صفر خواهد بود).
میتوان نشان داد که اگر $x = b_1 \bigoplus b_2 \bigoplus \cdots \bigoplus b_{\lceil \frac{n}{2} \rceil}$ و $x > 0$ حتما یک عدد $j$ وجود دارد به شرطی که $b_j > b_j \bigoplus x$. یا به عبارت دیگر اگر xor $b_i$ ها ناصفر باشد ، میتوان یکی از $b_i$ ها را تعداد کاهش داد به طوری که xor اعداد برابر با صفر شود.
میتوان نشان داد در صورتی نفر اول برندهی بازی خواهد بود که xor $b_i$ ها در ابتدا مخالف صفر باشد، در این صورت او در هر مرحله یکی از $b_i$ ها را طوری کاهش میدهد که xor اعداد برابر با صفر باشد و نفر دیگر با حرکت خود باعث میشود که xor اعداد ناصفر شود. پس اگر این استراتژی را ادامه دهد هیچ وقت نوبت او xor اعداد برابر با صفر نخواهد بود و نتیجتاً هیچ وقت تمام $b_i$ ها برابر با صفر نخواهد بود و او برنده بازی است.
در صورتی که xor $b_i$ ها در ابتدا برابر با صفر باشد نفر دوم با استراتژی گفته شده می تواند برنده بازی باشد.
پيچيدگي
میتوان به راحتی مقدایر $b_i$ ها را با $o(n)$ عملیات بهدست آورد و بر حسب xor آنها پاسخ سؤال را خروجی داد.