Персистента nlogn памяти, так что N > 5e6, а учитывая что у тебя ещё пуши то N ещё больше будет(у тебя в итоге даже в запросах get появляются новые вершины N > 1e7 может быть даже). Попробуй подобрать нужное значение N, мб в этом дело? Можешь добавить в коде условия такие что при создании вершины с номером \geq N ты выводишь неправильный ответ, и так будет легко определить в этом ли дело.
Ну и на самом деле есть более простое решение с помощью обычной ДОшки и параллельного бин. поиска, которое тратит всего O(n + q) памяти.
Давай закинем все запросы в один массив и запустим функции func(l, r, Q), где Q-это все запросы, а l, r - границы в которых мы ищем ответ.
Изначально l = 0, а r = n, теперь нам нужно разделить запросы из Q на два множества запросов Q_l и Q_r те кто лежат левее m = (r + l) / 2 и те кто лежат правее m.
Как это быстро делать?
Активируем изменения которые лежат на отрезке от l...m, теперь для каждого запроса проверяем стало ли значением на его позиции \geq x, если да то перекидываем этот запрос в Q_l, иначе перекидываем его в Q_r.
Теперь запускаем func(m + 1, r, Q_r)(не убирая те обновления которые мы сделали в дошке), после того как мы возвращаемся обратно, мы должны откатить последние m - l + 1 изменений в ДОшке, это можно сделать обратными операциями(тип если было обновление [l, r, x] то делаем [l, r, -x], и запускаем уже func(l, m, Q_l).
Если правильно работать с памятью то решение будет за O(N) памяти и O(N*log^2(N) + Q*loq^2(N)) времени. На самом деле у меня есть сомнения что это пройдёт по ТЛу.
А теперь вспомним один интересный факт об этой задаче, нас просят делать get только на ОДНОМ элементе, а значит никакие обновления на отрезке здесь и подавно не нужны, мы можем заменить эту задачу на get на префиксе и апдейт на позициях. А значит в решении которое все предлагали выше мы можем перестать говорить о персистентной ДОшке которая требует массовых апдейтов(Что очень неприятно), и перейти к обычной персистентной ДО с апдейтом в позиции и гетом на префиксе, а в решении с параллельным бин. поиском всё становится ещё легче, ведь можно заменить структуру на фенвик, ведь в том решении даже не требуется персистентность.
Подводя итог хочу сказать что перед тем как начать код задумайтесь о том действительно ли нужно решать задачу так, лишние пару минут размышлений и небольших оптимизаций могут спасти вас от десятков минут кодинга и дебага, а в рамках почти любой олимпиады время является очень важным ресурсом.