Дан массив a [] из N натуральных чисел, где элементы являются последовательными (отсортированы). Кроме того, есть один элемент, который повторяет X (любую переменную) количество раз. Теперь задача состоит в том, чтобы найти элемент, который повторяется.
while (start < end)
{
int mid = (start + end) / 2;
// if a[mid] >= mid + a[0], there is no repeating character in [start,mid]
if (a[mid] >= mid + a[0])
start = mid + 1;
// if a[mid] < mid + a[0], there is a repeating character in [start,mid]
else
end = mid;
}