오늘의 알고리즘
[C++] 백준 2467 용액
하늘하늘 .
2022. 6. 6. 22:13
#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. 두 개가 같을 때까지 한다.