#G525121. [GESP202512 五级 C++] 26. 数字移动

[GESP202512 五级 C++] 26. 数字移动

题目描述

小 A 有一个包含 NN 个正整数的序列 A={A1,A2,...,AN}A=\{A_1,A_2,...,A_N\},序列 AA 恰好包含 N/2N/2 对不同的正整数。形式化地,对于任意 1iN1\le i\le N,存在唯一一个 jj 满足 1jN,ij,Ai=Aj1\le j\le N, i\ne j, A_i=A_j

小 A 希望每对相同的数字在序列中相邻,为了实现这一目的,小 A 每次操作会选择任意 i(1iN)i(1\le i\le N),将当前序列的第 ii 个数字移动到任意位置,并花费对应数字的体力。

小 A 可以执行任意次操作,但他希望自己每次花费的体力尽可能小。小 A 希望你能帮他计算出一个最小的 xx,使得他能够在每次花费的体力均不超过 xx 的情况下令每对相同的数字在序列中相邻。

输入格式

第一行一个正整数 NN(偶数)。

第二行 NN 个正整数 A1,...,ANA_1,...,A_N,每个值恰好出现两次。

数据保证至少需要一次操作。

输出格式

一行,满足要求的 xx 的最小值。

数据范围

  • 对于 40%40\% 的测试点,保证 1N,Ai1001\le N,A_i\le 100
  • 对于所有测试点,保证 1N,Ai1051\le N,A_i\le 10^5

测试样例

6
1 2 1 3 2 3
2

说明/提示

对于 40%40\% 的测试点,保证 1N,Ai1001\le N,A_i\le 100

对于所有测试点,保证 1N,Ai1051\le N,A_i\le 10^5