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

Автор Wild_Hamster, история, 8 лет назад, По-русски

У меня возникла проблема.

Этот код(http://pastebin.com/7fG1A6P6) получает RE на одной из систем тестирования.

Понятно, что скорее всего это из-за глубины рекурсии. Как можно обойти это с моей стороны? У меня на компьютере этот код так же вылетает.

Буду благодарен за помощь.

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

»
8 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

А какой компилятор в тестирующей системе и дома?

#pragma comment(linker, "/STACK:1000000000") работает только под MS вроде.

Под GNU C++ можно компилировать с флагом -fno-stack-limit, но с тестирующей системой это не поможет.

  • »
    »
    8 лет назад, # ^ |
    Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

    Компилятор g++ на сервере и дома. Не MS.

    Как именно обойти тогда это с тестирующей системой? Никак?

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

      Можно, есть функции getrlimit и setrlimit из #include <sys/resource.h>.

      Вот здесь есть описание. У меня заработали (linux и g++).

      Возможно есть ещё способы :)

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

        У меня такую библиотеку не находит. Даже на КФ не находит.

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

          На CF тестируется под Windows и компилятор GNU C++ TDM, видимо поэтому не находит. На contest.yandex.ru вроде работает.

          А на той тестирующей системе тоже под Windows тестируется? Если да, то придется искать другой способ.

          Я вот так пробовал.

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

            Да, работает. Но все же интересно, как на винде это сделать. У меня на винде это не компилируется.

            • »
              »
              »
              »
              »
              »
              »
              8 лет назад, # ^ |
              Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

              Круто, что работает :)

              Под винду не знаю как сделать. Возможно как-то можно установить размер стека для потока. В boost::thread вроде можно такое делать.