Pinely Round 2 (Div. 1 + Div. 2) |
---|
Закончено |
Вам дан массив из $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$.
За одну операцию вы разбиваете массив на две части: непустой префикс и непустой суффикс. Значение каждой части определяется как побитовое исключающее ИЛИ (XOR) всех элементов в ней. Затем отбросьте часть с меньшим значением. Если обе части имеют одинаковое значение, вы можете сами выбрать, какую часть отбросить. После этого массив становится равен оставшейся части.
Операции выполняются, пока длина массива не станет равна $$$1$$$. Для каждого $$$i$$$ ($$$1 \le i \le n$$$) определите, можно ли достичь состояния, в котором остаётся только $$$i$$$-й элемент (в исходной нумерации).
Формально, у вас есть два числа $$$l$$$ и $$$r$$$, изначально $$$l = 1$$$ и $$$r = n$$$. Текущее состояние массива есть $$$[a_l, a_{l+1}, \ldots, a_r]$$$.
Пока $$$l < r$$$, вы применяете следующую операцию:
Для каждого $$$i$$$ ($$$1 \le i \le n$$$) определите, можно ли добиться равенств $$$l = r = i$$$.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1 \le t \le 10\,000$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит целое число $$$n$$$ ($$$1 \le n \le 10\,000$$$).
Вторая строка каждого набора входных данных содержит $$$n$$$ целых чисел $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \le a_i < 2^{60}$$$).
Гарантируется, что сумма значений $$$n$$$ по всем наборам входных данных не превосходит $$$10\,000$$$.
Для каждого набора входных данных выведите строку длины $$$n$$$, где $$$i$$$-й символ равен 1, если можно добиться $$$l = r = i$$$, и 0 в противном случае.
663 2 1 3 7 451 1 1 1 1101 2 4 8 4 1 2 3 4 550 0 0 0 051 2 3 0 11100500
111111 10101 0001000000 11111 11001 1
В первом тесте возможно добиться равенств $$$l = r = i$$$ для всех $$$i$$$ от $$$1$$$ до $$$n$$$:
Отдельно рассмотрим случай $$$i = 2$$$. Изначально $$$l = 1$$$, $$$r = 6$$$.
Название |
---|