#563. Syl 和序列操作

传统 1000 ms 1024 MiB
标准 IO
文本比较 dd 标签

题目描述

Syl 有一个长度为 nn 的整数序列 ai{a_i},她每次可以选择一个下标 i(1in)i(1 \le i \le n),并从下列三种操作选择一种进行:

  • aia_i 变为 ai+1a_i+1ai1a_i-1
  • 所有 j>ij>iaj>aia_j>a_ijj,将 aja_j 变为 aj1a_j-1
  • 所有 j<ij<iaj<aia_j<a_ijj,将 aja_j 变为 aj+1a_j+1

现在 Syl 觉得她的序列太不整齐了,于是想通过上面三种操作将序列的所有数字变得相同。请你帮助她算一算,最少需要多少次操作才能满足 Syl 的愿望呢?

输入格式

第一行,一个整数 tt (1t105)(1\le t\le 10^5),表示测试数据的组数。

对于每组测试数据,第一行输入一个整数 nn (1n105)(1\le n\le 10^5),表示序列长度;第二行包含 nn 个整数 aia_i (109ai109)(-10^9\le a_i \le 10^9)

保证所有测试数据的 nn 之和 n105\sum n\le 10^5

输出格式

对每组测试数据,输出一个整数,表示最少能使得序列数字全部相同的操作数。

样例

输入样例

2
5
1 2 3 4 5
5
5 4 3 2 1

输出样例

4
6