问题2173--两数之和(Hard version)

2173: 两数之和(Hard version)

[命题人 : ]
时间限制 : 1 sec  内存限制 : 128 MB

提交

题目描述

注意:这是问题的困难版本。它与简单版本的区别在于对 n, m $a_i$ 的限制,以及$a_i$ + $a_j$ = m, $i$ < $j$

给你一个长度为 $n$ 序列 $a$ 和一个整数目标值 $m$,输出有多少对(i, j) 满足$a_i$ + $a_j$ = m($i$ < $j$)

输入

第一行为两个整数 $n$ 和 $m$ 。(1 $\le$ $n, m$ $\le$ 100000)
第二行 $n$个整数,第 $i$ 个整数表示 $a_i$(1 $\le$ $a_i$ $\le$ $10^9$)

输出

一个整数表示答案。

样例输入 Copy

6 6
2 2 3 3 4 2

样例输出 Copy

4

提示

和为6的所有 (i, j) 为:
(1, 5), (2, 5), (3, 4), (5, 6)