#include <iostream>
#include <algorithm>
#include <vector>
#include <tuple>
int main()
{
int N = 0;
std::cin >> N;
std::vector<long long> vec(N, 0);
for (int i = 0; i < N; ++i)
{
std::cin >> vec[i];
}
std::sort(vec.begin(), vec.end());
int iStart = 0;
int iEnd = N - 1;
std::tuple<long long, long long, long long> tuple(0,0,2000000001);
while (iStart != iEnd)
{
if (abs(vec[iStart] + vec[iEnd]) < std::get<2>(tuple))
tuple = { vec[iStart], vec[iEnd], abs(vec[iStart] + vec[iEnd]) };
if (abs(vec[iStart]) >= abs(vec[iEnd]))
++iStart;
else
--iEnd;
}
std::cout << std::get<0>(tuple) << " " << std::get<1>(tuple);
return 0;
}
투포인트 문제
1. 두 개의 크기를 확인해서 큰 쪽이 작은 쪽으로 움직이고
2. 두 개가 같을 때까지 한다.
'오늘의 알고리즘' 카테고리의 다른 글
[C++] 백준 1927 최소 힙 (0) | 2022.06.08 |
---|---|
[C++] 백준 1976 여행 가자 (0) | 2022.06.08 |
[C++] 백준 1446 지름길 (0) | 2022.06.04 |
[C++] 백준 15989 1, 2, 3 더하기 (0) | 2022.06.03 |
[C++] 백준 5972 택배 배송 (0) | 2022.06.02 |