#1129. 和为给定数

和为给定数

题目描述

给定一个包含 n n 个整数的数组,判断其中是否存在两个不同位置的数,它们的和等于给定的值 m m 。如果存在,输出这两个数(按升序排列);如果存在多对数满足条件,选择较小数最小的那对;如果不存在,输出 No

输入格式

  • 第一行:整数 n n 0<n3000 0 < n \leq 3000 ),表示数组的长度。
  • 第二行:n n 个整数(每个整数范围为 0 0 108 10^8 ),用空格分隔。
  • 第三行:整数 m m 0m230 0 \leq m \leq 2^{30} ),表示目标和。

输出格式

  • 如果存在满足条件的数对,输出两个整数(升序排列),用单个空格分隔。
  • 如果存在多对数满足条件,选择较小数最小的那对。
  • 如果不存在,输出一行 No
4
2 5 1 4
6
1 5

解释:数对 (1, 5) 的和为 6,且 1 是所有可能的较小数中最小的。

7
10 20 1 2 6 8 12
18
6 12

解释:数对 (6, 12)(8, 10) 的和均为 18,但 (6, 12) 的较小数 6 更小。

7
10 20 1 2 6 8 12
24
No

解释:不存在和为 24 的数对。

数据范围

  • 0<n3000 0 < n \leq 3000
  • 每个整数范围:0num108 0 \leq \text{num} \leq 10^8
  • 目标和范围:0m230 0 \leq m \leq 2^{30}