Блог пользователя BekzhanKassenov

Автор BekzhanKassenov, 11 лет назад, По-русски

Решая задачу 251C - Number Transformation, столкнулся с такой проблемой:

Мой код ловит какой-то странный рантайм. То на 3 тесте, то на 9, то ВА 5. Локально рантайм тоже вылетает не всегда. Если убрать поставленные cerr, то рантайм вылетает всегда, с ними — рандомно. Оптимизацию -O2 я не включал.

Идея решения такова: есть функция make, принимающая 2 параметра l и r. Она возвращает минимальное количество ходов, необходимых чтобы из числа r получить число l. Ну и дальше очевидные ифы из кода. Если что не понятно — пишите, объясню.

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

»
11 лет назад, # |
  Проголосовать: нравится +6 Проголосовать: не нравится

В 70 строке dp[l+1] выходит за пределы массива на последней итерации цикла. Если увеличить массив на 1 перестает падать на семпле.

  • »
    »
    11 лет назад, # ^ |
      Проголосовать: нравится +5 Проголосовать: не нравится

    Спасибо большое — AC. Но почему рантайм вылетал рандомно?

    • »
      »
      »
      11 лет назад, # ^ |
        Проголосовать: нравится +1 Проголосовать: не нравится

      Честно говоря, не знаю. Казалось бы на одних и тех же данных должно вылетать в одном месте.

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +5 Проголосовать: не нравится

        В любом случае, спасибо. За минусы тоже

      • »
        »
        »
        »
        11 лет назад, # ^ |
          Проголосовать: нравится +1 Проголосовать: не нравится

        Нет, за выделение памяти отвечает система. Иногда можно вмазать по памяти, и все будет нормально, но иногда эта память уже занята чем-то другим, вот тогда и приходит рантайм.