伊娃喜欢从整个宇宙中收集硬币。
有一天,她去了一家宇宙购物中心购物,结账时可以使用各种硬币付款。
但是,有一个特殊的付款要求:每张帐单,她只能使用恰好两个硬币来准确的支付消费金额。
给定她拥有的所有硬币的面额,请你帮她确定对于给定的金额,她是否可以找到两个硬币来支付。
#include<iostream>
#include<algorithm>
#include<unordered_set>
const int INF = 1e5+1;
int n, m;
using namespace std;
int main()
{
unordered_set<int> hash;
int v1 = INF; //待找的最小值.
cin>>n>>m;
for (int i = 0; i<n; i++) {
int a, b;
cin >> a;
b = m - a;
if (hash.count(b) ) { //是否存在这样的a,b加起来 = m.
if (v1 > min (a, b)) v1 = min (a, b); //存在则让v1 = (a,b)中的最小值.
} else {
hash.insert(a); //不存在则将a插入到表中.
}
}
if (v1 == INF) cout << "No Solution" << endl; //待输出的两种情况.
else cout << v1 <<" " <<m - v1 << endl;
return 0;
}