Я нашел этот вопрос для интервью, и я не смог найти алгоритм лучше, чем O (N ^ 2 * P):
Для вектора натуральных чисел P (1,2,3,..., P) и другого вектора длины N, элементы которого от первого вектора, найдем самую длинную подпоследовательность во втором векторе, так что все элементы равномерно распределены (имеют одинаковую частоту).
Пример: (1,2,3) и (1, 2,1,3,2,1,3,1,2,3, 1). Самая длинная подпоследовательность находится в интервале [2,10], поскольку она содержит все элементы из первой последовательности с одинаковой частотой (1 появляется три раза, два раза три и три раза).
Сложность времени должна быть O (N * P).