输入n(n<=100000)个整数,找出其中两个数,(假设一定有解) ,使他们的和等于m.
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int n,m;
int a[100000];
cin >> n >> m;
int i;
for(i=0; i<n; i++) {
cin >> a[i];
}
sort(a+0,a+n);
int left = 0;
int right = n-1;
while(left < right) {
int mid=left+(right-left)/2;//为了防止left+right太大而溢出
if(a[left]+a[right] == m) {
printf("%d,%d",a[left],a[right]);
break;
} else if(a[left]+a[right] > m) {
right=mid;
} else {
left=mid;
}
}
return 0;
}