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。