P12765 [POI 2018 R3] 三座塔 2 Three towers 2
题目背景
翻译来自于 [LibreOJ](https://loj.ac/p/5073)。
题目描述
**题目译自 [XXV Olimpiada Informatyczna — III etap](https://sio2.mimuw.edu.pl/c/oi25-3/dashboard/) [Trzy wieże 2](https://szkopul.edu.pl/problemset/problem/VAWioeFeAgo2s3xeUQAd_amg/statement/)**
小朋友 Bitoni 热爱玩耍。他在房间里将 $n$ 个积木排成一列,每块积木为白色、灰色或黑色三种颜色之一。Bitoni 想挑选一段连续的积木,用这些积木搭建三座塔。
Bitoni 将搭建三座塔:白色积木建白塔,灰色积木建灰塔,黑色积木建黑塔。若某颜色积木在选段中缺失,对应塔的高度为 $0$。三座塔的高度必须互不相同(即每座塔的积木数不同)。Bitoni 必须使用所有选中的积木。帮助 Bitoni 编写程序,找出满足他要求的最长连续积木段。
输入格式
第一行包含一个正整数 $n$,表示积木数量。
第二行包含一个长度为 $n$ 的字符串 $a_1 a_2 \ldots a_n$,其中 $a_i$ 为字母 $\texttt{B}$、$\texttt{S}$ 或 $\texttt{C}$,分别表示第 $i$ 块积木的颜色($\texttt{B}$ 为白色,$\texttt{S}$ 为灰色,$\texttt{C}$ 为黑色)。
输出格式
输出一行:若无法从任何连续积木段建满足要求的塔,输出 `NIE`;否则,输出一个整数,表示满足 Bitoni 要求的最长连续积木段的积木数。
说明/提示
**样例 1 解释**
Bitoni 可选长度为 $6$ 的积木段 BSSBCS,搭建灰塔($3$ 块)、白塔($2$ 块)、黑塔($1$ 块)。
**附加样例**
1. $n=2500$,积木序列为 $\texttt{B}^{1248} \texttt{C}\underline{\texttt{SB}^{1250}}$($\texttt{B}^{k}$ 表示 B 重复 $k$ 次),最长可选段已标出。
2. $n=1000000$,积木序列为 $\texttt{BSCBSCBSC...BSCBSCB}$,答案 `NIE`。
详细子任务附加限制及分值如下表所示。
| 子任务 | 附加限制 | 分值 |
| :---: | :--: | :---: |
| $1$ | $n \leq 2500$ | $30$ |
| $2$ | $n \leq 1000000$ | $70$ |