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

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

HotLog


 

Круговой марафон

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

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

Антона в очередной раз пригласили принять участие в марафоне, но этот марафон оказался довольно необычным — он проводился на стадионе!

Антона позвали в другой город, поэтому про стадион, на котором он собирается бежать, ему ничего не известно (даже примерно). Чтобы скрасить свое участие в этом довольно скучном событии, он поставил перед собой задачу — узнать длину кругового участка стадиона.

Опыт Антона в забегах позволяет ему с высокой точностью отмерять расстояние и пробегать ровно k метров по треку. Но памятью наш бегун похвастаться не может. Единственное, что он в силах запомнить — это сколько кругов он уже пробежал.

Антон предлагает вам скооперироваться, а именно помочь ему узнать длину беговой дорожки стадиона за не более чем 100 продвижений по треку.

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

Взаимодействие происходит с помощью запросов. Вы можете просить Антона пробежать на k метров вперёд с помощью запроса «run k» (1 ≤ k ≤ 109). В ответ на такой запрос вы получите единственное число — количество кругов, которое он уже пробежал, включая текущий запрос. Круг считается завершённым, если бегун пробегает стартовую точку или находится в ней.

Гарантируется, что длина участка — положительное целое число, не превышающее 109.

Если вы готовы указать длину кругового участка, то вы можете убедиться в его правильности с помощью запроса «ensure s». После такого запроса программа должна немедленно завершиться.

При превышении количества запросов (более 100) вы получите вердикт «Wrong answer» (при условии завершения работы программы).

Ваше решение может получить вердикт «Time Limit Exceeded», если вы ничего не выводите или забываете сбросить буфер вывода.

Пример

стандартный вводстандартный вывод
1 1
1
2
3
run 5
run 2
run 4
run 1
ensure 4

Примечание

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

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

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

 Язык программирования C++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 Тренировочные олимпиады
 Школьный этап
 Муниципальный этап
 Региональный этап
 Полуфинал ВКОШП
 Личное первенство СФУ
 2006 / 2007
 2007 / 2008
 2008 / 2009
 2009 / 2010
 2010 / 2011
 2011 / 2012
 2012 / 2013
 2013 / 2014
 2014 / 2015
 2015 / 2016
 2016 / 2017
 2017 / 2018
 2018 / 2019
 2019 / 2020
 2020 / 2021
 A. Дистанционное обучение
 B. Код от сейфа
 C. Всеобъемлющая Галактическая Магистральная Сеть
 D. ДНК-палиндром
 E. Разлад Империй
 F. Раздача Фибоначчи
 G. Карты, числа, два заклинания
 H. Гипноз
 I. Круговой марафон
 J. Пасьянс по-иркутски
 K. Shark Attack

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