与leetcode上的第一题类似
先排序再用双指针往中间遍历
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 5e4;
int arr[maxn];
int main() {
int target, n;
cin >> target >> n;
for(int i = 0; i < n; i++){
cin >> arr[i];
}
sort(arr, arr+ n);
int i = 0, j = n - 1;
bool flag = false;
while(i < j){
if(arr[i] + arr[j] > target) j--;
else if(arr[i] + arr[j] < target) i++;
else{
cout << arr[i] << " " << arr[j] << endl;
flag = true;
i++, j--;
}
}
if(!flag) cout<<"No Solution"<<endl;
return 0;
}