#include <algorithm>
#include <iostream>
#include <map>
using namespace std;
map<int,int> mp;
int main()
{
int n,m;
scanf("%d %d",&n,&m);
int a[n];
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
mp[a[i]] = 1;
}
sort(a,a+n);
int v1 = 0;
for(int i=0;i<n;i++)
{
v1 = a[i];
if(mp[m-v1] && m-v1 != v1)
{
printf("%d %d",v1,m-v1);
return 0;
}
}
printf("No Solution");
return 0;
}
简单模拟一下…
小技巧:用map保存出现过得数,这样我们就能把找两个数的问题变为找一个数的问题