[R79B]砝码 - 代码源竞赛平台
时空限制
1S/512M
题目描述
有 n 个砝码,编号为 1,2,…,n,其中第 i 个砝码的重量为 ai。不同砝码的重量可以相同。
给定目标重量 w,你需要选择两个编号不同的砝码,使它们的总重量尽可能接近 w。
具体地,若选择的两个砝码编号为 i,j,其中 1≤i<j≤n,则它们的总重量为 s=ai+aj,与目标重量的误差为 ∣s−w∣。其中,∣x∣ 表示 x 的绝对值:当 x≥0 时,∣x∣=x;当 x<0 时,∣x∣=−x。
请在所有选择中,使误差 ∣s−w∣ 最小。如果有多个总重量都能达到最小误差,取其中最小的总重量。输出最终选定的总重量 s。
格式
输入格式
第一行包含两个整数 n,w,分别表示砝码的数量和目标重量。
第二行包含 n 个整数 a1,a2,…,an,其中 ai 表示第 i 个砝码的重量。
输出格式
输出一行,包含一个整数,表示最终选定的两个砝码的总重量。
样例
样例输入 #1
4 10
2 4 7 9
样例输出 #1
9
样例解释 #1
选择编号为 1,3 的砝码,总重量为 9,误差为 1;选择编号为 1,4 或 2,3 的砝码,总重量为 11,误差也为 1。
不存在误差为 0 的选择,因此最小误差为 1。在达到最小误差的总重量中,取较小的 9。
样例输入 #2
3 10
5 5 8
样例输出 #2
10
样例解释 #2
选择编号为 1,2 的砝码,总重量恰好为 10。这两个砝码虽然重量相同,但编号不同,可以同时选择。
样例输入 #3
2 5
4 8
样例输出 #3
12
样例解释 #3
只有两个砝码,必须同时选择它们,得到的总重量为 12。
数据规模
注意:你只有通过了该题目的所有测试点,才能获得分数。
对于 100% 的数据,满足 2≤n≤300,1≤w≤109,1≤ai≤109。