문제 : https://www.acmicpc.net/problem/2467


백준 2470 문제와 동일합니다. ( BOJ 2470 풀이 : https://travelbeeee.tistory.com/244?category=816106)

#include<iostream>
#include<vector>
#include<algorithm>
#define INF 2000000001
using namespace std;

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(0); cout.tie(0);

	int N, t;
	cin >> N;
	vector<int> list;
	for(int i = 0; i < N; i++){
		cin >> t;
		list.push_back(t);
	}
	int ans1, ans2;
	int ansSum = INF;
	sort(list.begin(), list.end());
	for (int i = 0; i < N; i++) {
		int left = i + 1, right = N - 1;
		while (left <= right) {
			int mid = (left + right) / 2;
			int sum = list[i] + list[mid];
			if (abs(sum) < ansSum) {
				ans1 = list[i], ans2 = list[mid];
				ansSum = abs(sum);
			}
			if (sum < 0)
				left = mid + 1;
			else
				right = mid - 1;
		}
	}
	cout << ans1 << ' ' << ans2;
	return 0;
}

 

+ Recent posts