CSPSMK05A. 限制串(string)

提交3 通过2
通过率66.7%
文件IO启用
输入文件string.in
输出文件string.out
时间限制1000ms
内存限制512MiB
    ID: 14539 传统题 文件IO 输入文件:string.in 输出文件:string.out 1000ms 512MiB 尝试: 3 已通过: 2 难度: 普及 上传者: 标签>C++CSP-S考前模拟

题目描述

题目描述

给定一个字符集大小 ∣Σ∣=K|\Sigma| = K 的长度为 NN 的字符串和 RR 个要求,每个要求为使子串中的字符 BB 至少出现 QQ 次。求出满足所有要求的最短子串长度。

输入格式

第一行包括三个整数 N, K, RN,\, K,\, R,分别表示字符串的长度、字符集的大小和要求个数。

第二行包含 NN 个用空格隔开的整数,表示这个字符串。字符从 00 开始编号,每个字符集中的字符至少出现一次。

接下来的 RR 行,每行两个整数 BB 和 QQ,表示一组要求,满足 0⩽B<K, 1⩽Q⩽N0\leqslant B < K,\, 1\leqslant Q\leqslant N,同一个字符不会被重复要求两次。

输出格式

输出一个整数,满足所有要求的最短子串长度。特别地,如果不存在这样的子串,输出 "impossible"。

输入样例 #1

5 2 2
0 1 1 0 1
0 1
1 1

输出样例 #1

2

输入样例 #2

13 4 3
1 1 3 2 0 1 2 0 0 0 0 3 1
0 2
2 1
1 2

输出样例 #2

7

输入样例 #3

5 3 1
1 2 0 1 2
0 2

输出样例 #3

impossible

说明提示

样例 1 解释

有三个长度为 22 的子串含有字符 00 和 11 各一个,分别为 0 1、1 0 和 0 1,但是不存在长度为 11 的子串满足要求,因此满足要求的最短子串的长度为 22。

样例 2 解释

最短的满足要求的子串为 1 3 2 0 1 2 0。

样例 3 解释

在这个字符串中,0 的数量不足。

数据范围

子任务 分值 限制
11 3030 1⩽N⩽100, R⩽101\leqslant N\leqslant 100,\, R\leqslant 10
22 2525 1⩽N⩽4 000, R⩽101\leqslant N\leqslant 4\, 000,\, R\leqslant 10
33 1⩽N⩽200 000, R⩽101\leqslant N\leqslant 200\, 000,\, R\leqslant 10
44 2020 1⩽N⩽200 0001\leqslant N\leqslant 200\, 000

保证 1⩽R⩽K⩽N1\leqslant R\leqslant K\leqslant N。