Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Алгоритмы
Курсы ККДП
Дистрибутивы
Ссылки

HotLog


 

Бесконечный поезд

(Время: 2 сек. Память: 16 Мб Сложность: 41%)

Это интерактивная задача.

Представьте себе замкнутую по окружности железную дорогу и поезд, последний вагон которого скреплен с первым так, что внутри можно перемещаться между вагонами. Вы оказались в случайном вагоне и желаете определить количество вагонов N (1 ≤ N ≤ 10 000). В каждом вагоне можно менять положение переключателя света, но начальное состояние переключателей случайное и заранее неизвестно.

Протокол взаимодействия

Вы можете делать следующие запросы программе жюри:

switch – изменение состояние переключателя света в текущем вагоне;

front – перемещение в следующий вагон;

back – перемещение в предыдущий вагон;

N – вывод ответа, где N – целое число (количество вагонов в поезде).

После каждого запроса (кроме последнего) вашей программе будет сообщено состояние переключателя света в том вагоне, в котором вы оказались: «on» - если свет горит и «off» – иначе. Последним запросом должен быть вывод целого числа N, после чего ваша программа должна немедленно завершиться. На момент подачи любой команды модуль разности между количеством поданных команд front и количеством поданных команд back не должен превышать 3×N.

Пример

стандартный вводстандартный вывод
1on
off
on
off
on
off
switch
front
front
switch
front
back
3
 

Пояснение к примеру

В поезде 3 вагона. Предположим, что мы находимся в первом вагоне. Свет горит только в третьем вагоне. Сначала мы включаем свет в первом вагоне, перемещаемся во второй, затем в третий и выключаем в нем свет. После чего движемся вперед, попадаем в первый вагон, движемся назад, попадаем в последний третий вагон и выводим ответ. Заметим, что на основании выполненных в примере запросов нельзя утверждать, что в поезде 3 вагона.

Примечание

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

  • В языке Pascal: flush(output)
  • В С/С++: fflush(stdout) или cout.flush()
  • В Java: System.out.flush()
  • В Python: sys.stdout.flush() из библиотеки sys
  • В C# и Basic: Console.Out.Flush()

Система оценивания

Решения, работающие только для N ≤ 100 будут оцениваться в 60 баллов.


Для отправки решения задачи необходимо зарегистрироваться и авторизоваться!

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2005 / 2006
 2006 / 2007
 2007 / 2008
 2008 / 2009
 2009 / 2010
 2010 / 2011
 2011 / 2012
 2012 / 2013
 2013 / 2014 7-8 классы
 2013 / 2014 9-11 классы
 2014 / 2015 7-8 классы
 2014 / 2015 9-11 классы
 2015 / 2016 7-8 классы
 2015 / 2016 9-11 классы
 2016 / 2017 7-8 классы
 2016 / 2017 9-11 классы
 2017 / 2018 7-8 классы
 2017 / 2018 9-11 классы
 2018 / 2019 7-8 классы
 2018 / 2019 9-11 классы
 A. Остаток от деления
 B. Газонокосильщик
 C. Предложение
 D. Бесконечный поезд
 E. Ремонт забора

Красноярский краевой Дворец пионеров, (c)2006 - 2019, E-mail: admin@acmp.ru