#P2775. 「BalticOI 2018」火星人的 DNA

「BalticOI 2018」火星人的 DNA

题目描述

题目译自 BalticOI 2018 Day1「Martian DNA

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

输入格式

第一行包括三个整数 N,K,RN,\, K,\, R,分别表示字符串的长度、字符集的大小和要求个数,保证 1RKN1\leqslant R\leqslant K\leqslant N
第二行包含 NN 个用空格隔开的整数,表示这个字符串。字符从 00 开始编号,每个字符集中的字符至少出现一次。
接下来的 RR 行,每行两个整数 BBQQ,表示一组要求,满足 0B<K,1QN0\leqslant B < K,\, 1\leqslant Q\leqslant N,同一个字符不会被重复要求两次。

输出格式

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

5 2 2
0 1 1 0 1
0 1
1 1
2
13 4 3
1 1 3 2 0 1 2 0 0 0 0 3 1
0 2
2 1
1 2
7
5 3 1
1 2 0 1 2
0 2
impossible

数据范围与提示

子任务 分值 限制
11 1616 1N100,R101\leqslant N\leqslant 100,\, R\leqslant 10
22 2424 1N4000,R101\leqslant N\leqslant 4\, 000,\, R\leqslant 10
33 2828 1N200000,R101\leqslant N\leqslant 200\, 000,\, R\leqslant 10
44 3232 1N2000001\leqslant N\leqslant 200\, 000

请注意在 LibreOJ 上共有 55 个子任务,其中第一个子任务为样例。