Чтобы в предыдущей задаче посчитать ответ быстрее чем за квадрат надо сделать два многочлена. Для каждой позиции
i, если она равна нулю, то записать first[i] = 1, а иначе second[n - i] = 1. Если их перемножить, то в res[n - len] + res[n + len] будет записано сколько пар (0, 1) на расстноянии ровно len. Правда работает это примерно столько же по времени сколько и битсет :)
В разборе пишут что-то сложное про какое-то равенство Персеваля, и что можно сделать все в три раза быстрее, но я ничего не понял.