class Solution { public: int fixedPoint(vector<int>& arr) { int left = 0, right = arr.size() - 1; while (left < right) { int mid = left + right >> 1; if (arr[mid] >= mid) { right = mid; } else { left = mid + 1; } } return arr[left] == left ? left : -1; } };