(先排序再双指针查找) $O(nlogn+n)$
C++ 代码
#include<iostream>
#include<algorithm>
using namespace std;
int n,m;
int a[100010];
int main()
{
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n);
int i=0,j=n-1;
while(i<j)
{
int t=a[i]+a[j];
if(t>m)j--;
else if(t==m){
printf("%d %d\n",a[i],a[j]);
exit(0);
}
else i++;
}
puts("No Solution");
}