AT_joig2026final_a マカロン (Macaron)
题目描述
JOI 市场推出了 $K$ 种类的马卡龙。这些马卡龙以盒装形式销售。
在马卡龙的盒中,$N$ 个马卡龙从左到右依次排列,第 $i$ 个($1 \leq i \leq N$)马卡龙的种类是 $A_i$。
比太郎买下了这个马卡龙盒。
比巴子也盯上了马卡龙。为了不让比巴子吃到马卡龙,比太郎决定在某个连续的、至多 $1$ 个区间内铺上一块遮盖布,使得这个区间内的马卡龙都被遮住看不见。如果遮盖从左起第 $l$ 个马卡龙到第 $r$ 个马卡龙($1 \leq l \leq r \leq N$),那么遮盖布的长度为 $r - l + 1$。
如果有任意一种马卡龙看不到,或者不满足所有 $K$ 种马卡龙都可见,比巴子就对马卡龙盒没兴趣。
比太郎想通过铺设尽可能短的遮盖布,让比巴子对马卡龙盒失去兴趣。现给出了盒中马卡龙的信息,请编写程序求出比太郎至少需要多长的遮盖布。如果可以不铺遮盖布,也应当输出 $0$。
输入格式
输入为一行,内容如下:
> $N$ $K$ $A_1$ $A_2$ $\cdots$ $A_N$
输出格式
输出一行,比太郎必须铺上的最短遮盖布长度。如果不需要铺遮盖布,则输出 $0$。
说明/提示
## 子任务
1.($20$ 分)$N \leq 100$。
2.($30$ 分)$K \leq 100$。
3.($50$ 分)无额外约束。
## 输入样例 1 说明
例如,从左起第 $3$ 个到第 $6$ 个马卡龙遮起来,遮盖布长度为 $4$,这样种类为 $2$ 的马卡龙一颗都看不见,因此比巴子不会出手。
无法用更短的遮盖布使比巴子不出手。因此,应输出 $4$。
本组输入符合所有子任务约束。
## 输入样例 2 说明
比太郎买下的马卡龙盒中,一开始就没有种类 $2$ 的马卡龙,所以即使不铺遮盖布,比巴子也不会对这个盒子出手。
因此,输出 $0$。
本组输入符合所有子任务约束。
# 数据范围
- $1 \leq K \leq N \leq 500\,000$。
- $1 \leq A_i \leq K$($1 \leq i \leq N$)。
- 所有输入均为整数。
由 ChatGPT 5 翻译