Олимпиадный тренинг

Задача . E. Беспалиндромные массивы


Назовем массив \(b\) плохим если он содержит последовательный отрезок \(b_l, b_{l+1}, \dots, b_{r}\) нечетной длины больше \(1\) (\(l < r\) и \(r - l + 1\) нечетно) такой что \(\forall i \in \{0, 1, \dots, r - l\}\) \(b_{l + i} = b_{r - i}\).

Если массив не плохой, то он хороший.

Вам задан массив \(a_1, a_2, \dots, a_n\). Некоторые его элементы равны \(-1\). Посчитайте количество хороших массивов, которое вы можете получить, заменив все \(-1\) на какие-то числа от \(1\) до \(k\).

Так как ответ может быть большим, выведите его по модулю \(998244353\).

Входные данные

Первая строка содержит два числа \(n\) и \(k\) (\(2 \le n, k \le 2 \cdot 10^5\)) — длина массива \(a\) и размер "алфавита", т. е., максимальное число, на которое вы можете заменять \(-1\).

Вторая строка содержит \(n\) чисел \(a_1, a_2, \dots, a_n\) (\(a_i = -1\) or \(1 \le a_i \le k\)) — массив \(a\).

Выходные данные

Выведите единственное число — количество хороших массивов, которые вы можете получить по модулю \(998244353\).


Примеры
Входные данныеВыходные данные
1 2 3
-1 -1
9
2 5 2
1 -1 -1 1 2
0
3 5 3
1 -1 -1 1 2
2
4 4 200000
-1 -1 12345 -1
735945883

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя