티스토리 뷰

문제

https://www.acmicpc.net/problem/2473

 

2473번: 세 용액

첫째 줄에는 전체 용액의 수 N이 입력된다. N은 3 이상 5,000 이하의 정수이다. 둘째 줄에는 용액의 특성값을 나타내는 N개의 정수가 빈칸을 사이에 두고 주어진다. 이 수들은 모두 -1,000,000,000 이상

www.acmicpc.net

문제해결

이분탐색

 

결과

코드

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;

using ll = long long;
const int LM = 5005;
ll arr[LM], ans[3];


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

	int n = 0;
	cin >> n;

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

	sort(arr, arr + n);

	ll result = 3000000001;
	for (int k = 0; k < n-2; k++)
	{
		int low = k+1, high = n - 1;

		while (low < high)
		{
			ll val = arr[k]+arr[low]+arr[high];

			if (abs(val) < result)
			{
				result = abs(val);
				ans[0] = arr[k];
				ans[1] = arr[low];
				ans[2] = arr[high];
			}

			if (val < 0)
				low++;
			else
				high--;
		}
	}
	cout << ans[0] << " " << ans[1] << " " << ans[2];
	return 0;
}
728x90
반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함