[백준] 2470. 두 용액

고재욱·2021년 10월 6일

Baekjoon

목록 보기
29/35

❓ 문제 ❓
두 용액

💯 문제 풀이 💯
이분 탐색을 사용하여 푼다.

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
	int n;
	cin >> n;
	vector<int> arr(n);

	for (int i = 0; i < n; i++)
		cin >> arr[i];

	sort(arr.begin(), arr.end());

	int left = 0, right = n - 1;
	int min_sum = 2000000000;
	int n1 = 0, n2 = 0;
	while (left < right) {
		int sum = arr[left] + arr[right];
		if (abs(sum) < min_sum) {
			min_sum = abs(sum);
			n1 = arr[left];
			n2 = arr[right];
			if (sum == 0) break;
		}
		if (sum < 0)
			left++;
		else right--;
	}
	cout << n1 << " " << n2;
	
}

0개의 댓글