04143: 和为给定数
http://cs101.openjudge.cn/dsapre/04143/
输入
共三行: 第一行是整数n(0 < n <= 100,000),表示有n个整数。 第二行是n个整数。整数的范围是在0到10^8之间。 第三行是一个整数m(0 <= m <= 2^30),表示需要得到的和。
输出
若存在和为m的数对,输出两个整数,小的在前,大的在后,中间用单个空格隔开。若有多个数对满足条件,选择数对中较小的数更小的。若找不到符合要求的数对,输出一行No。
样例输入
4 2 5 1 4 6
样例输出
1 5
python
# 23n2300011760(喜看稻菽千重浪)
n=int(input())-1;m=0
A=sorted(map(int,input().split()))
s=int(input())
while m<n:
while m<n and A[m]+A[n]>s:n-=1
while m<n and A[m]+A[n]<s:m+=1
if m<n and A[m]+A[n]==s:print(A[m],A[n]);break
else:print("No")