#include class Solution { public: std::vector twoSum(std::vector &numbers, int target) { int j = -1; for (int i = 0; i < numbers.size(); ++i) { int otherhalf = target - numbers[i]; j = binarySearch(numbers, 0, numbers.size() - 1, otherhalf); if (j != -1 && i != j) { if (i < j) { return {i + 1, j + 1}; } else { return {j + 1, i + 1}; } } } return {-1, -1}; } int binarySearch(std::vector &numbers, int start, int end, int key) { if (start <= end) { int middle = (start + end) / 2; if (numbers[middle] == key) return middle; else if (numbers[middle] > key) return binarySearch(numbers, start, middle - 1, key); else return binarySearch(numbers, middle + 1, end, key); } return -1; } };