#include using namespace std; /给定排序数组arr和整数k,不重复打印arr中所有相加和为k的不降序二元组 例如, arr = [-8, -4, -3, 0, 1, 2, 4, 5, 8, 9], k = 10,打印结果为: 1, 9 2, 8/

/思路:前后两个指针,若指针所指的两个数符合则输出,若结果偏小则左边指针向后移动(越往右越大)/ int main() {

int n, k,i;
cin >> n >> k;
int* arr = new int[n];
for (i = 0;i < n;i++)cin >> arr[i];
int* begin = arr, * end = arr + n-1;
//cout << *end;
while(begin<end) {
	if ((*begin + *end) == k && *begin != *(begin - 1) && *end != *(end + 1)) {   //防止重复
		cout << *begin << " " << *end << endl;
		begin++;
		end--;
	}
	else if ((*begin + *end) < k)  begin++;
	else end--;
}

delete[]arr;
return 0;

}