原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1001
思路:排序+二分 O(nlogn)
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 1000005;
int a[50005];
int main() {
int n, k;
scanf("%d %d", &k, &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
sort(a, a + n);
bool flag = true;
for (int i = 0; i < n; i++) {
int v = k - a[i];
int *p = lower_bound(a + i + 1, a + n, v);
if (*p == v) {
printf("%d %d\n", a[i], v);
flag = false;
}
}
if (flag)printf("No Solution\n");
return 0;
}