A9456.数组片段匹配

普及-

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

定义数组 (a1,a2,,an)(a_1, a_2, \cdots, a_n) 的一个片段为 (al,al+1,,ar)(a_l, a_{l+1}, \cdots, a_r) 其中 1lrn1 \le l \le r \le n。比如对于数组 (1,4,2,8,5,7)(1, 4, 2, 8, 5, 7)l=2,r=4l = 2, r = 4 的片段为 (4,2,8)(4, 2, 8)
如果两个数组片段的边界至少有一个不同,则认为这两个数组片段不同即使这两个片段具有的元素值相同。
比如对于数组 (1,1,1,1,1)(1, 1, 1, 1, 1)l=1,r=3l = 1, r = 3l=2,r=4l = 2, r = 4 时,两个数组片段都为 (1,1,1)(1, 1, 1) 但他们是不同的数组片段,因为他们的左右边界不同。

现给定一个数组需要你找出数组中的两个长度为 kk 的子片段,这两个子片段中 存在\bf{存在} 数对 p(xi,yi)(1ik)p(x_i, y_i) (1 \le i \le k) 其中 $x_i = y_i。

例如数组 (3,1,5,2,1,3,4)(3, 1, 5, 2, 1, 3, 4)(3,1,5,2)(3, 1, 5, 2)(2,1,3,4)(2, 1, 3, 4) 是它的两个不同的子片段,其中第一个子片段,数字 11 在 第二个位置, 第二个子片段,数字 11 也在第二个位置,所以认为这两个子片段满足条件。

给你一个数组,请你找出这样的两个子片段使得他们的长度 kk 最大。

输入格式

输入的第一行为一个正整数 t(1t100)t (1 \le t \le 100)

对于每个测试用例,第一行为一个正整数 n(2n150000)n(2 \le n \le 150000),接下来为 nn 个正整数 ai(1ai150000)a_i (1 \le a_i \le 150000)

题目保证对于所有的测试点,nn 的总和不超过 5×1055 \times 10^5

输出格式

对于每个测试用例,在单独的一行中输出满足条件的最大的 kk ,如果不存在这样匹配的子片段,则输出 1-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=5l = 1, r = 5 ,另一个是$ l = 2, r = 6$ 。不难观察到,这些段是一对是匹配的两个不同的子片段,即使它们都等于(1,1,1,1,1)(1, 1, 1, 1, 1)

在第三个测试样例中,不存在这样匹配的子片段,所以答案是 1-1

首页