双指针 O(n)
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
int n,m; cin >> n >> m;
int array[n];
for(int i = 0; i < n; i++)
cin >> array[i];
sort(array,array+n);//先排序
int l = 0,r = n - 1;//左右指针
while(l < r){
if(array[l] + array[r] > m)
r--;
else if(array[l] + array[r] < m)
l++;
else{
cout << array[l] << " " << array[r] <<endl;
return 0;
}
}
cout << "No Solution" << endl;
return 0;
}