#NC2510F. 老师和 Yuuka 逛商场

老师和 Yuuka 逛商场

题目描述

老师最近出了一些程序设计竞赛试题,赚到不少钱。除去购买草莓牛奶所用的一部分,还留有许多剩余。Yuuka 是今天的值日生,凑巧今天工作又不多,老师决定带她去商场逛逛,以弥补曾经对她开的关于体重的玩笑。

在购买商品之前,老师已得知商场中有 n n 个排成一排的商店。从左到右这些商店编号为 1,2,3,,n 1,2,3,\cdots,n 。Yuuka 列出了每个商店的 独特度:商店 i(1in) i (1 \leq i \leq n) 的独特度为正整数 ai a_i

现在,老师需要将所有商店划分成三个连续的部分,从左到右编号为 1,2,3 1,2,3

具体地,老师会指定两个整数 b1,b2(1<b1<b2n) b_1,b_2 (1 < b_1 < b_2 \leq n) 。令 b0=1,b3=n+1 b_0 = 1,b_3 = n + 1 ,此时 b1,b2 b_1,b_2 对应了一个满足下列条件的划分方案:

  • i(1i3) i (1 \leq i \leq 3) 个部分包含商店 bi1,bi1+1,bi1+2,,bi1 b_{i-1},b_{i-1} + 1,b_{i-1} + 2,\cdots,b_i - 1

对于每一个独特度 x x ,假如三个部分中每个部分都存在至少一个独特度为 x x 的商店,则 Yuuka 称独特度 x x 普遍的

老师从不是一个小气的人,但他还是想将这些钱用在更重要的事情上。为了降低 Yuuka 对商品的消费,老师想要通过合适的划分手段,使得这个划分中普遍的独特度的个数最大。他找来了你帮忙,并且要求你额外提供一个达到这个最大值的划分方案。

输入格式

本题包含多组测试数据。

首先在第一行输入一个正整数 T(1T10) T (1 \leq T \leq 10) 表示测试数据组数。

第一行包含一个正整数 n(3n150,000) n (3 \leq n \leq 150,000) ,表示商店的数量。

第二行包含 n n 个正整数 a1,a2,a3,,an(1ai106) a_1,a_2,a_3,\cdots,a_n (1 \leq a_i \leq 10^6) ,表示每个商店的独特度。

来自 Yuuka 的温馨提示:本题输入量较大,请选择合适的输入方式。

输出格式

对于每一组测试数据,输出包含两行:

第一行包含一个整数表示题目所求的最大值。

第二行包含两个整数 b1,b2 b_1,b_2 。你需要保证 1<b1<b2n 1 < b_1 < b_2 \leq n

若有多个满足条件的划分方案,输出任意一个都算作正确。

3
9
1 2 3 3 2 1 2 3 1
10
3 3 2 2 2 3 2 1 1 1
10
4 3 3 3 4 4 3 4 3 3
3
4 7
1
2 3
2
3 6

解释 #1

这个样例共有三组测试数据。

在第一组测试数据中,令 b1=4,b2=7 b_1 = 4, b_2 = 7 。此时独特度 1,2,31, 2, 3 是普遍的,普遍的独特度的个数达到最大值。
在第二组测试数据中,令 b1=2,b2=3 b_1 = 2, b_2 = 3 。此时独特度 33 是普遍的,普遍的独特度的个数达到最大值。值得一提的是,在这组测试数据中,存在不止一个划分方案达到题目所求最大值,输出任意一个都算作正确。

在第三组测试数据中,令 b1=3,b2=6 b_1 = 3, b_2 = 6 。此时独特度 3,43, 4 是普遍的,普遍的独特度的个数达到最大值。这组测试数据同样存在不止一个划分方案达到题目所求最大值,输出任意一个都算作正确。