Note
- 二分查找
Code:
#include<bits/stdc++.h>
using namespace std;
int main(){
#ifndef ONLINE_JUDGE
freopen("data.txt","r",stdin);
#endif
int n,m;
cin>>n>>m;
int v[n];
for(int i=0;i<n;i++)
cin>>v[i];
sort(v,v+n);
int left,right,mid;
for(int i=0;i<n;i++){
left=i,right=n-1;
while(left<=right&&right!=i){ //right不能等于i!!
mid=(left+right)/2;
if(v[i]+v[mid]==m&&mid>=i){
printf("%d %d\n",v[i],v[mid]);
return 0;
}
else if(v[i]+v[mid]>m) right=mid-1;
else left=mid+1;
}
}
printf("No Solution\n");
return 0;
}