P7230 [COCI 2015/2016 #3] NEKAMELEONI
题目背景
> 「嘿,亲爱的!我要去给 $11$ 月 $28$ 日的 Croatian Open Competition In Informatics 出 T5。」
> 「去吧,去吧……」
> 「…」
> _____
> 「这题怎么样?」
> 「唔……这太难了……会把那些小可爱难住的,换个简单些的吧……」
> 于是可爱的出题人便出了这道题。
> ______
> 嘿!我会 $O(n^6)$ 的做法,$ n$ 的范围是什么??
题目描述
给你一个 $n$ 个元素的数组。你需要处理 $q$ 个查询。
- 第一种查询需要你将数组中的第 $p$ 个数字改为 $v$。
- 第二种查询需要你确定当前数组中最短的连续子数组的长度,这个子数组必须要包含从 $1$ 到 $k$ 的所有数字。
输入格式
第一行,三个正整数 $n, k, m$。
第二行,$n$ 个正整数,用空格隔开,表示数组中的数。
接着,$m$ 行,表示 $m$ 个查询,每个查询有以下两种形式。
- $\texttt{1 p v}$:将数组中的第 $p$ 个数字改为 $v$。
- $\texttt{2}$:确定并输出当前数组中最短的连续子数组的长度,这个子数组必须要包含从 $1$ 到 $k$ 的所有数字。
输出格式
仅查询 $2$ 有输出。
对于每个查询 $2$,输出当前数组中最短的连续子数组的长度(这个子数组必须要包含从 $1$ 到 $k$ 的所有数字),若没有输出 $\texttt{-1}$。
说明/提示
#### 数据范围及约定
- 对于 $30\%$ 的数据,$1\le n, m \le 5 \times 10 ^ 3$。
- 对于 $100\%$ 的数据,$1 \le n, m \le 10^5$,$1\le k \le 50$,$1 \le p \le n$,$1\le v \le k$。
#### 说明
翻译自 [COCI 2015-2016 #3 E NEKAMELEONI](https://hsin.hr/coci/archive/2015_2016/contest3_tasks.pdf),满分 140。