luogu#P9617. [CERC2019] The Bugs

[CERC2019] The Bugs

题目背景

题目译自 CERC 2019The Bugs

题目描述

一艘涂有明亮塑料柠檬色的潜艇正在调查海洋深度,并测量水中塑料 yocto 颗粒的浓度。每个测量值(由于巧妙地选择了单位)都是一个正整数。

测量系统是最新的,很少测试,容易出错。项目管理层怀疑它充满了漏洞。他们发现自己陷入了困境。Mother Mary 也怀疑里面满是漏洞。大家都喊:救命!

为了发现和修复这些漏洞,他们聚集在一起,决定采用浓度的测量序列,并分析测量序列中出现的所有三元组。

  • 三元组是由三个整数组成的序列。
  • 每个三元组都与其特征组相关。
  • 三元组 (x,y,z)(x, y, z) 的特征组是三元组 $(\text{sgn}(y−x) ,\text{sgn}(z−y), \text{sgn}(z−x))$。对于 xx 的负值、零值或正值,sgn(x)\text{sgn}(x) 函数的值分别为 1−10011,即 $\text{sgn}(x)=\begin{cases}0&x=0\\\dfrac{x}{|x|}&x\ne 0\end{cases}$。
  • 三元组 (x1,y1,z1)(x_1, y_1, z_1) 小于三元组 (x2,y2,z2)(x_2, y_2, z_2),当且仅当三元组 (x1x2,y1y2,z1z2)(x_1-x_2, y_1-y_2, z_1-z_2) 中的第一个非零值为负。
  • 三元组 TT 的标记组是一个最小的三元组,它的值都为正,并且其特征组等于 TT 的特征组。

一个被测三元组是作为测量序列的子序列的三元组。也就是说,这个三元组的元素以它们在三元组中出现的相同顺序出现在测量序列中,但在序列中它们不一定相互跟随。

在对它们进行分析之前,被测三元组根据它们的标记组进行分组。管理层希望提前知道所有测量的三元组的标记组的集合。

输入格式

第一行包含一个整数 N (3N2×105)N\ (3\le N\le 2\times 10^5),代表测量序列的长度。

第二行包含 NN 个整数 x1,x2,xN (1xi109)x_1, x_2, x_N\ (1\le x_i\le 10^9),代表测量序列。

输出格式

按递增顺序输出所有被测三元组的所有不同标记组,这些标记组可以从给定的测量序列中获得,每行一个。输出标记组时,其连续元素之间不应有空格。

5
1 2 3 4 5

123

6
5 4 9 1 7 4

121
132
211
212
213
231
312
321