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

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

Недавно я решал задачи с тренировок и там были 2 интерактивные задачи. Что за интерактивные задачи и как их решать? После тестовых примеров там было написано, что нужно использовать fflush (в С++). Я читал на cplusplus.com и ничего не понял. Можно про него по подробнее? Спасибо!

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

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

Раз уж создали тему, давно стало интересно: почему в раундах никогда не было интерактивных задач? Они, вроде бы, поддерживаются системой.

Это связано со сложностью тестирования, или авторы просто почему-то не придумывают такие задачи? В этом году интернет-олимпиады от ИТМО, похоже, всеми силами пытаются обратить внимание народа на интерактивные задачи :)

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

    Codeforces как бы все поддерживает, но чтобы эти задачи появились в раундах, администрации требуется провести Testing Round-ы, а им что-то не до этого.

    Еще, если такие задачи будут в раундах, надо думать, какой делать инпут для взломов. Вроде бы взлом должен содержать в этом случае инпут для интерактора. Но этот вопрос решить, кажется, не проблема.

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

Это задачи, где входные данные поступают не сразу, а в результате взаимодействия с интерактором

Подробнее http://mirror.codeforces.com/blog/entry/5152

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

Пример интерактивной задачи: Вам нужно отгадать число. Вы пишите свою догадку в stdout, а система отвечает вам в stdin "больше", "меньше" или "равно". Таким образом чтение и запись чередуются несколько раз.

Зачем нужен fflush: Дело в том, что операция "общения" с программами или файлами очень "дорогая". Поэтому их пытаются буферизовать (ждать пока накопится большой кусок данных (как водитель марширутки ждёт пассажиров)). Поэтому, что бы быть уверенным, что всё, что вы хотели записать в поток, записалось, нужно вызывать flush.

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

Да, про техническую сторону интерактивов тут уже все правильно написали.

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

При этом, их многие необоснованно боятся решать (это видно хотя бы по количеству AC по интерактивам с учетом того, что мы их пока делаем достаточно легкими), и их, по крайней мере, в нашем коллективе, никто толком не умеет придумывать и делать (это можно было заметить по косякам с интерактивами на первой интернет-олимпиаде этого года).

Собственно, мы хотим исправить оба этих факта, и именно поэтому стараемся делать по два-три интерактива на каждый наш контест.