CF743E Vladik and cards

题目描述

Vladik 在回家路上感到无聊,决定玩如下游戏。他拿了 $n$ 张牌,并把它们排成一行放在自己面前。每张牌上都写有一个不超过 $8$ 的正整数。他决定找出一组满足以下条件的最长子序列: - 子序列中从 $1$ 到 $8$ 的每个数出现的次数,两两之间之差不超过 $1$。形式化地说,若子序列中数字 $k$ 的个数为 $c_k$,那么对于所有整数对 $(i,j)$,都有 $|c_i-c_j| \leq 1$。 - 若子序列中存在数字 $x$,则所有带数字 $x$ 的牌在该子序列中必须构成一个连续的区间(但在原序列中不要求连续)。例如,子序列 $[1,1,2,2]$ 满足该条件,而 $[1,2,2,1]$ 不满足。注意,$[1,1,2,2]$ 不满足第一个条件。 请你帮 Vladik 找出同时满足上述两个条件的最长子序列的长度。

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 1000$),表示 Vladik 序列中的牌的数量。 第二行包含 $n$ 个不超过 $8$ 的正整数,表示 Vladik 的序列。

输出格式

输出一个整数,表示 Vladik 的序列中满足条件的最长子序列的长度。

说明/提示

在第一个样例中,所有牌上的数字都相同,因此无法选取多于一张的牌,否则会违反第一个条件。 由 ChatGPT 5 翻译