A9456.数组片段匹配
普及-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
定义数组 (a1,a2,⋯,an) 的一个片段为 (al,al+1,⋯,ar) 其中 1≤l≤r≤n。比如对于数组 (1,4,2,8,5,7) 其 l=2,r=4 的片段为 (4,2,8)。
如果两个数组片段的边界至少有一个不同,则认为这两个数组片段不同即使这两个片段具有的元素值相同。
比如对于数组 (1,1,1,1,1) 当 l=1,r=3 或 l=2,r=4 时,两个数组片段都为 (1,1,1) 但他们是不同的数组片段,因为他们的左右边界不同。
现给定一个数组需要你找出数组中的两个长度为 k 的子片段,这两个子片段中 存在 数对 p(xi,yi)(1≤i≤k) 其中 $x_i = y_i。
例如数组 (3,1,5,2,1,3,4) 中 (3,1,5,2) 和 (2,1,3,4) 是它的两个不同的子片段,其中第一个子片段,数字 1 在 第二个位置, 第二个子片段,数字 1 也在第二个位置,所以认为这两个子片段满足条件。
给你一个数组,请你找出这样的两个子片段使得他们的长度 k 最大。
输入格式
输入的第一行为一个正整数 t(1≤t≤100)。
对于每个测试用例,第一行为一个正整数 n(2≤n≤150000),接下来为 n 个正整数 ai(1≤ai≤150000)。
题目保证对于所有的测试点,n 的总和不超过 5×105。
输出格式
对于每个测试用例,在单独的一行中输出满足条件的最大的 k ,如果不存在这样匹配的子片段,则输出 −1 。
输入输出样例
输入#1
4 7 3 1 5 2 1 3 4 6 1 1 1 1 1 1 6 1 4 2 8 5 7 2 15 15
输出#1
4 5 -1 1
说明/提示
第一个测试样例已在题目中给出解释。
第二个测试样例中,你需要取两个子片段:一个是 l=1,r=5 ,另一个是$ l = 2, r = 6$ 。不难观察到,这些段是一对是匹配的两个不同的子片段,即使它们都等于(1,1,1,1,1) 。
在第三个测试样例中,不存在这样匹配的子片段,所以答案是 −1 。