4247: 两数之和

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:1

题目描述

    给出一组正整数和一个正整数,从这组正整数中找出两个数,使这两个数相加后的和小于等于目标值并且离目标值最接近,然后将两个数的和输出。如正整数9,1,2,3, 目标值为13,离目标值最近的9+3=12,输出12。

输入

第一行输入一组正整数, 用“,“分隔,第二行输入目标值。

输出

输出离目标值最近的两个数的和,如果任意两个数的和均大于目标值, 则输出-1

样例输入 复制

9,1,2,3
13

样例输出 复制

12

提示

ls=list(map(int,input().split(",")))
t=int(input())
minD=t  #最小差值初始设为目标值
diff=0  #与目标值的差值
ans=-1 #离目标值最近的两个数的和
for i in range(0,len(ls)-1):
    for j in range(i+1,len(ls)):
        if (ls[i]+ls[j])<=t:
            diff=t-ls[i]-ls[j]
            if diff<minD:
                minD=diff
                ans=ls[i]+ls[j]
print(ans)