#M250736. 零值替换

零值替换

题目描述

小Z\tt Z 正在玩一个数字游戏。他有一个包含 NN 个非负整数的数组,其中有些位置可能是 00。游戏规则如下:

  • 找到数组中所有值为 00 的位置;
  • 将这些 00 替换成任意你想要的数字;
  • 目标是通过替换,使数组中相等的数字对尽可能多;

相等数字对:满足 i<ji < j 且 Ai=AjA_i = A_j 的不同索引对 (i,j)(i,j) 的数量。

输入格式

第一行是 NN,表示数组大小。

第二行是 NN 个空格分隔的整数 A1,A2,…,AnA₁, A₂, …, A_n。

输出格式

输出一个整数,表示通过最优替换后数组中可能的最大相等数字对数。

输入输出样例

5
1 3 1 4 4
2

样例 #1\tt \#1说明

  • 数组中有两对相等的元素:分别为(1,1)(1,1) 和 (4,4)(4,4)。
5
3 3 2 0 0
6

样例 #2\tt \#2说明

  • 将两个 00 替换为 33 后,数组变为 [3,3,2,3,3][3,3,2,3,3],共有 66 对相等的元素,下标为 (1,2),(1,4),(1,5),(2,4),(2,5),(4,5)(1,2),(1,4),(1,5),(2,4),(2,5),(4,5)。
3
0 0 0
3

数据范围

  • 对于 30%30\% 的数据,1≤ai≤100,1≤n≤1001\le a_i\le 100, 1\le n \le 100,即不存在零元素替换。
  • 对于另外 40%40\% 的数据,1≤n≤10001\le n \le 1000。
  • 对于 100%100\% 的数据,1≤n≤105,0≤ai≤1001 \le n \le 10^5, 0 \le a_i \le 100。