#include<stdio.h> #include<algorithm> using namespace std; int arr[100066]; int main() { int n,m; scanf("%d%d",&n,&m); for(int i=0 ; i<n ; ++i) scanf("%d",&arr[i]); sort(arr,arr+n); int l=0,r=n-1; //左右指针 while(l<r) //【caution】这里不能有“=”,等于的话进去l=r同一个坐标不可能2个数 { int tmp=arr[l]+arr[r]; if(tmp==m) //左右指针指向的数字之和等于m,即找到 { printf("%d %d",arr[l],arr[r]); return 0; } else if(tmp<m) //之和小于m,左指针后移,增大tmp ++l; else //之和大于m,右指针前移,减小tmp --r; } printf("No Solution"); return 0; }
时间: 2024-10-10 08:13:04