ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила

Чемпионат школьников. Март 2004

Описание     Задачи     Отправить на проверку     Состояние проверки     Результаты
Соревнование завершено

J. Псилонцы

Ограничение времени: 1.0 секунды
Ограничение памяти: 64 МБ
Наверное, самыми совершенными военными роботами-десантниками обладает раса Псилонцев. При прорыве к Терре четыре таких десантника за три часа полностью уничтожили один из древних городов, и значительную часть прилегающей территории. С ними явно шутки плохи. А поэтому военное командование Земли крайне озабочено подготовкой личного состава к ведению боевых действий против псилонцев на случай нового вооружённого конфликта с ними. Но для выработки тактики ведения боя, необходимо смоделировать поведение псилонца-десантника. В этом-то вам как раз и придется поучаствовать!
Как оказалось, поведение робота-псилонца не такое уж и сложное. У него есть всего четыре модели поведения: «защита», «атака», «охрана» и «патрулирование». Кроме того тот блок логики робота, который придется промоделировать вам, работает по простой схеме: он принимая во внимание некоторые входные параметры, на выход дает одну из команд:
LEFT X – потратить на поворот влево X единиц энергии;
RIGHT X – потратить на поворот вправо X единиц энергии;
FRONT X – потратить на перемещение вперед X единиц энергии;
BACKWARD X – потратить на перемещение назад X единиц энергии;
FIRE P – потратить на выстрел P единиц вооружения;
STOP – ничего не делать.
X во всех случаях определяется по следующему правилу: если текущий запас энергии робота больше 100, то X = 100. Иначе X равен запасу энергии робота. P определяется похожим образом: она равна минимуму из 20 единиц вооружения и того количества единиц вооружения, которое на данный момент находится в распоряжении робота.
Самая простая модель поведение – «охрана». Согласно ей, робот стоит на месте, выбирает самую опасную цель, если угол до выбранной цели по абсолютной величине меньше 5, то робот производит выстрел. Если же угол больше либо равен 5 – поворачивается влево. Если угол меньше либо равен –5 – вправо. Если же врагов нет, то робот ничего не делает.
При реализации модели поведения «защита», робот действует так: если количество врагов умноженное на 20 не меньше количества единиц вооружения робота, то робот отступает отстреливаясь. Иначе он действует согласно стратегии «охрана».
Модель поведения «Атака» работает следующим образом: если N*NP > M*MP*3, то робот наступает отстреливаясь. Иначе, отступает отстреливаясь. Здесь N – количество своих роботов; NP – их средний запас энергии; M – количество вражеских роботов; MP – средний запас энергии вражеских роботов.
«Отступает, отстреливаясь» означает, что если угол до самой опасной вражеской цели не менее 5 или врагов нет, то робот движется назад. Иначе он делает выстрел.
«Наступает, отстреливаясь» означает, что если угол до самой опасной вражеской цели не менее 10 или врагов нет, то робот движется вперед. Иначе он делает выстрел.
Если при «патрулировании» робот встречает врага, то действует согласно схеме «защита». Если врага нет, то движется к очередной точке маршрута по следующему алгоритму:
Если отклонение от курса до точки маршрута больше 20, то робот поворачивается в нужную сторону. Патрулирующему роботу без разницы задом или передом перемещаться, и это стоит учитывать при выборе стороны, в которую робот будет поворачивать: робот выбирает сторону так, чтобы угол, на который придется повернуть, был минимальным.
Если отклонение от курса до точки маршрута меньше либо равно 20, робот движется вперед (или назад) в направлении точки маршрута.

Исходные данные

В первой строке два целых числа: текущие запас энергии робота и запас единиц вооружения. Во второй строке символ, определяющий модель поведения робота: G – охрана; D – защита; A – атака; P – патрулирование. В третьей строке три целых числа: количество врагов, средний запас энергии вражеского юнита и угол до самой опасной вражеской цели.
Если модель поведения – «атака», то в четвёртой строке содержится еще два целых числа: количество своих роботов и их средний запас энергии. Если модель поведения – «патрулирование», то в четвёртой строке одно целое число – угол отклонения от очередной точки маршрута.
Величины углов лежат в пределах от –179 до 180, все остальные числа во входных данных неотрицательны и не превосходят 1000.

Результат

Команда для робота в указанном выше формате.

Примеры

исходные данныерезультат
100 100
P
0 0 0
-100
LEFT 100
10 1000
A
1 10 30
100 1000
FRONT 10
10 1000
G
1 10 4
FIRE 20
Автор задачи: Павел Егоров
Источник задачи: IX Открытое командное соревнование школьников по программированию (13.03.2004)
Чтобы отправить решение этой задачи на проверку перейдите в Архив задач: 1299. Псилонцы