if (std::abs(val) < std::abs(max_val))
{
max_val = val;
ans[0] = sol[i];
ans[1] = sol[left];
ans[2] = sol[right];
}
위 부분을 원래
if (std::abs(val) >= std::abs(max_val))
break;
로 작성했었는데, 이 경우 최소값이 나올 수 있음에도 불구하고 작업을 종료하기 때문에 종료 조건은 오로지 left == right 로 해야합니다.