普及⏱ 1000ms💾 256MB#P5113🏷️ 二分排序

题目描述

团购系统里登记了 $n$ 个账户的余额(整数),系统要找出一对账户,使两家余额之和恰好等于目标金额 $m$:

  • 若存在多对,选其中"较小数"最小的那一对输出;
  • 输出格式:小数在前、大数在后,用空格分隔;
  • 若任何一对都凑不出 $m$,输出 No。

输入格式

三行: 第一行整数 $n$; 第二行 $n$ 个整数,用空格分隔; 第三行整数 $m$。

输出格式

一行:找到的数对(小数在前,空格分隔),或 No。

数据范围

$$0 < n \le 100000,\quad 0 \le \text{整数} \le 10^8,\quad 0 \le m \le 2^{30}$$

样例输入 #1
4
2 5 1 4
6
样例输出 #1
1 5
样例输入 #2
3
1 2 3
5
样例输出 #2
2 3