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

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

HotLog


 

Стреляй!

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

Это интерактивная задача. Помните старую игру, в которой нужно было охотиться на уток? Сейчас по ней проходит мировой чемпионат, и хакер Степан мечтает выиграть главный приз. Чтобы победить, ему понадобится ваша помощь в написании бота, который всегда будет выигрывать и попадать в уток.

Игра проходит на бесконечном экране, состоящем из клеток. Утка находится в определенной клетке, которая неизвестна игроку.

Игрок может выстрелить в любую клетку. Если он попадает в утку, то забирает приз и игра заканчивается. Если промахивается, то утка пугается и пытается улететь от выстрела. Если вы попали в строку, находящуюся ниже чем утка, то утка перелетает на одну строку вверх. Если же вы попали в строку выше, то утка летит на одну строку вниз. Если вы попали в строку с уткой, то строка не меняется. Аналогичные правила действуют и на столбцы.

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

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

Каждый выстрел нужно выводить в отдельной строке в виде двух целых чисел i и j через пробел, означающих номер строки и столбца соответственно. Несмотря на то, что поле игры бесконечное, координаты выстрела не должны превышать 109 по абсолютному значению.

После каждого вашего выстрела на ввод подаются два целых числа di и dj, означающие изменение строки и столбца координат утки соответственно.

Если оба этих числа равны нулю, значит вы попали в утку и необходимо завершить программу.

Гарантируется, что изначальные координаты утки не превосходят 106 по абсолютному значению.

Пример

стандартный вводстандартный вывод
11 -1
1 1
0 1
0 0
1 2
2 -1
4 0
4 2

Примечание

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

  • В языке 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. Кампус

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