Аномальное поведение программы на С++

Revision ru1, by Lo_R_D, 2016-08-25 10:45:53

Добрый день.

Начну по порядку: вчера я два часа писал двумерное дерево отрезков с операцией суммы на сжатых координатах с хранением только ненулевых вершин. После этого еще два часа ушли на поиск ошибки. Потом начался раунд Aim Tech, и только после него я смог найти причину вердикта "Ошибка исполнения на тесте 17". Взгляните на следующий код и то как он работает.

Сначала я думал, что это срабатывает только для нулевой вершины, поэтому просто пропускал её. Но решить проблему с "Ошибкой исполнения" помогло лишь то, что перед использованием функции getNext() (а так же функций getLeft() и getRight()) я дополнительно вызываю их один раз без использования того, что они возвращают, потому что то что они могут вернуть после первого вызова — непредсказуемо. В частности: на Codeforces этот код вместо нуля выводит 24, у меня на компьютере — случайное большое число.

History

 
 
 
 
Revisions
 
 
  Rev. Lang. By When Δ Comment
ru1 Russian Lo_R_D 2016-08-25 10:45:53 952 Первая редакция (опубликовано)