Всем привет,
Сегодня при дорешивании Харьковской Зимней Школы (а у них стоит G++ 4.5.3) столкнулся с такой проблемой, что довольно очевидное дерево отрезков получало WA2, когда как у меня часовой стресс-тест никаких багов не нашёл. Задача такая: дан массив, поступают запросы "GET l r a b", нужно выводить количество чисел на [l,r], значения которых находятся в промежутке [a,b].
Мой код: http://pastie.org/3810241 Наивное решение: http://pastie.org/3810252 Тест: http://pastie.org/3810319 Скрин: http://imgur.com/tquWU
После часа шаманства нашёл причину, если код функции calc просто перенести в query, или же тупо написать inline перед calc, то всё становится окей.
Причём у меня на GCC 4.6.x разницы никакой нет, а на 4.5 ветке ответы получаются разными. Компилирую с "-O2".
Я не особо знаток плюсов, помогите пожалуйста, почему так получается?