PAT A1048
two pointers
#include<iostream>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n1,n2;
vector<int> a;
int main(){
int b;
scanf("%d %d",&n1,&n2);
for(int i=0;i<n1;i++){
scanf("%d",&b);
a.push_back(b);
}
sort(a.begin(),a.end());
for(int i=0,j=n1-1;i<j;){
if(a[i]+a[j]==n2){
printf("%d %d",a[i],a[j]);
return 0;
}else if(a[i]+a[j]>n2){
j--;
}else if(a[i]+a[j]<n2){
i++;
}
}
printf("No Solution");
}