#7471. 两数之和

两数之和

题目描述

给定一个长度为 nn 的整数数组 a1,a2,,ana_1, a_2, \dots, a_n 以及一个整数目标值 tt
请你判断是否存在两个不同的下标 iijjiji \neq j),使得 ai+aj=ta_i + a_j = t 成立。

你需要处理多组测试数据。

输入格式

第一行包含一个整数 TT,表示测试数据组数。

接下来 TT 组测试数据,每组数据包含两行:

  • 第一行包含两个整数 nntt,分别表示数组长度和目标值。
  • 第二行包含 nn 个整数,第 ii 个整数为 aia_i

输出格式

对于每组测试数据,输出一行:

  • 若存在满足条件的两个不同下标,输出 YES
  • 否则输出 NO

样例

3
4 9
2 7 11 15
5 0
-1 1 0 2 -2
3 10
1 2 3
YES
YES
NO

样例解释

  • 第一组数据:2+7=92 + 7 = 9,下标 1122 满足条件,输出 YES
  • 第二组数据:1+1=0-1 + 1 = 0,或 2+(2)=02 + (-2) = 0,存在多对满足条件,输出 YES
  • 第三组数据:任意两数之和均不为 1010,输出 NO

数据范围

  • 1T101 \le T \le 10
  • 2n1052 \le n \le 10^5
  • 109ai109-10^9 \le a_i \le 10^9
  • 109t109-10^9 \le t \le 10^9

保证所有测试数据的 nn 之和不超过 2×1052 \times 10^5