#L2635. 「BalticOI 2011 Day2」剽窃 Plagiarism

「BalticOI 2011 Day2」剽窃 Plagiarism

题目描述

译自 BalticOI 2011 Day2 T2「Plagiarism」

NN 个数 f1,f2,,fNf_1, f_2, \ldots, f_N,试求:有多少对 (fi,fj)(1i<jN)(f_i, f_j)\,\,(1\le i<j\le N) 满足 (0.9×fj)fifj(0.9 \times f_j) \le f_i \le f_j

世界编程比赛的参赛者向评分系统提交了 NN 个解决方案文件 f1,...,fNf_1 ,...,f_N。在最终确认结果之前,评委希望排除任何抄袭的可能性。他们有一个程序可以比较两个文件,判断它们是否过于相似。

然而,文件数量相当大,比较所有文件对需要太多时间。另一方面,许多文件对可以基于文件大小差异太大而快速排除。

更准确地说,评委决定完全跳过比较那些较小文件大小小于较大文件大小 90%90\% 的文件对。因此,比较程序只需要检查那些满足 iji \neq jsize(fi)size(fj)\textrm{size}(f_i) \leq \textrm{size}(f_j) 且 $\textrm{size}(f_i) \geq 0.9 \times \textrm{size}(f_j)$ 的不同文件对 (fi,fj)(f_i, f_j)

编写一个程序,计算需要检查的文件对数量。

输入格式

第一行有一个整数 NN
第二行有 NN 个整数 f1,f2,,fNf_1, f_2, \ldots, f_N

输出格式

一行一个整数,表示有多少对 (fi,fj)(1i<jN)(f_i, f_j)\,\,(1\le i<j\le N) 满足条件。

样例

样例 1

输入

2
2 1

输出

0

样例 2

输入

5
1 1 1 1 1

输出

10

数据范围与提示

  • 对于 50%50\% 的数据,1N20001 \leq N \leq 2000
  • 对于所有数据,1N1051 \leq N \leq 10^51fi1081 \leq f_i \leq 10^8