본문 바로가기

개발/알고리즘

백준 2470 두 용액 C++

문제

www.acmicpc.net/problem/2470

 

2470번: 두 용액

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

www.acmicpc.net

코드

#include<bits/stdc++.h>

using namespace std;

int n, arr[100000], ans[2], minValue = INT_MAX;

void sol()
{
	int left = 0, right = n - 1;
	while (left < right)
	{
        int tempSum = arr[left] + arr[right];
        if (minValue > abs(tempSum))
        {
            minValue = abs(tempSum);
			ans[0] = left;
			ans[1] = right;
		}

		if (tempSum > 0)
			right--;
		else
			left++;
	}
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

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

	sort(arr, arr + n);

	sol();

	cout << arr[ans[0]] << " " << arr[ans[1]] << "\n";

	return 0;
}

'개발 > 알고리즘' 카테고리의 다른 글

백준 1344 축구 C++  (0) 2021.04.16
백준 4781번 사탕가게 C++  (0) 2021.04.16
백준 4811번 알약 C++  (0) 2021.04.13
백준 15651 N과M(3) - 중복 순열 C++  (0) 2021.04.11
백준 15650 N과M(2) - 조합 C++  (0) 2021.04.11