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

Задача . D. Изоляция


Найдите количество способов разбить массив \(a\) из \(n\) целых чисел на произвольное количество непересекающихся непустых подотрезков так, чтобы для каждого подотрезка существовало не более \(k\) различных чисел, которые встречаются ровно один раз.

Так как ответ может быть очень большим, выведите остаток от деления ответа на \(998\,244\,353\).

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

Первая строка содержит два целых числа \(n\) и \(k\), разделенных пробелами (\(1 \leq k \leq n \leq 10^5\)) — количество элементов в массиве \(a\) и ограничение из условия.

Следующая строка содержит \(n\) целых чисел \(a_1, a_2, \ldots, a_n\) (\(1 \leq a_i \leq n\)) — элементы массива \(a\).

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

Первая и единственная строка вывода должна содержать количество способов разбить элементы массива \(a\) по модулю \(998\,244\,353\).

Примечание

В первом примере возможных разбиений три:

  • \([[1], [1], [2]]\)
  • \([[1, 1], [2]]\)
  • \([[1, 1, 2]]\)

Разбиение \([[1], [1, 2]]\) невозможно, потому что два целых числа встречаются ровно один раз на отрезке \([1, 2]\).


Примеры
Входные данныеВыходные данные
1 3 1
1 1 2
3
2 5 2
1 1 2 1 3
14
3 5 5
1 2 3 4 5
16

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

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