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

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


 

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

(Время: 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++
 Решение олимпиадных задач
 Региональные олимпиады
 Книги Фёдора Меньшикова
 ЕГЭ по информатике
 Тренировочные олимпиады
 Введение
 Условный оператор
 Операторы цикла
 Строковые типы данных
 Массивы
 Функции
 Сортировка
 Двумерные массивы
 Рекурсия
 Цикл с параметром (for)
 Цикл с предусловием (while)
 Цикл с постусловием (do ... while)
 НОД и НОК
 Бинарный поиск
 A. Сложность бинарного поиска
 B. POBEDA-2014
 C. Угадай число
 D. Ксерокопии
 E. Космическое поселение
 F. Стреляй!
 G. Вырубка леса
 H. Корень кубического уравнения
 I. Дипломы
 J. Кампус
 K. Сыграешь с Денисом?
 L. Три монеты
 M. Круговой марафон

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