Спершу розберемо саму гру, і виявиться, що вона зовсім проста.
Позначимо через s = r - l + 1 кількість вершин підгри, через M = \binom{s}{2} — максимально можливу кількість ребер, а через D = M - e — кількість відсутніх ребер у поточному графі.
Перший гравець виграє, щойно граф стає повним, тобто щойно D = 0. Кожен хід змінює рівно на одиницю: додавання ребра зменшує, видалення — збільшує.
Якщо D = 0 вже на старті, перший гравець виграв одразу.
Якщо D = 1, Антон своїм першим ходом додає єдине відсутнє ребро й виграє.
Якщо D \ge 2, у Антона немає шансів: скільки б ребер він не додавав, суперник щоразу видаляє щойно додане, повертаючи до попереднього значення. Оскільки після ходу Антона лишається D - 1 \ge 1 відсутніх ребер, граф ніколи не стає повним, і гра триває вічно — перемагає другий гравець.
Отже, перший гравець виграє на відрізку [l, r] тоді й лише тоді, коли індукований підграф є повним або повним без одного ребра:
Тепер підрахунок. Ключове спостереження — монотонність: додавання нової вершини до відрізка ніколи не зменшує кількість відсутніх ребер, бо всі попередні «дірки» залишаються. Тому для фіксованого множина придатних — це префікс: розширюємо , доки D \le 1, і зупиняємось назавжди, щойно D \ge 2.
Заодно це дає межу на довжину: майже повний підграф на вершинах потребує щонайменше \binom{s}{2} - 1 ребер, тому s = \mathcal{O}(\sqrt{m}) — відрізки короткі.
Реалізація: ідемо від до і розширюємо ; додаючи вершину , треба дізнатися, скільки її сусідів уже лежать у [l, r-1]. Це класичний запит «скільки елементів у діапазоні», який обробляє дерево Фенвіка над номерами вершин. Кожне додавання оновлює лічильник ребер усередині відрізка, і ми одразу перевіряємо умову.
Складність — \mathcal{O}\bigl((n + \text{кількість придатних відрізків}) \log n\bigr). Відповідь може сягати \binom{n+1}{2}, тому 64-бітний тип обов'язковий.