printРабочее место участника

printЗадачи

2434. Робот-кладовщик

Ограничения: время – 200ms/500ms, память – 256MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Для управления роботом-кладовщиком используется программа, которая может содержать следующие команды:
  • F – идти вперед на один шаг;
  • F* – идти вперед, пока движение вперед возможно;
  • R – повернуться на 180 градусов;
  • T – взять верхний ящик в стопке ящиков прямо перед роботом;
  • D – поставить ящик в стопку ящиков прямо перед роботом;
  • C – подняться или спуститься на соседнюю стопку ящиков.
Пусть `h` – высота из стопки ящиков, на которой находится робот, и `z` – высота соседней стопки ящиков, на которую смотрит робот, тогда для команд F, T, D и C должны выполняться следующие ограничения.
КомандаОграничения
F`h=z`
C`h=z-1` или `h=z+1`
T`h=z` или `h+1=z` или `h+2=z`, робот не держит ящик
D`h=z-1` или `h=z` или `h=z+1`, робот держит ящик
Робот может переносить только один ящик. Робот не может покидать комнату. Комната имеет длину, равную длине `N` ящиков, фиксированную ширину (1 ящик) и неограниченную высоту. Перед выполнение программы робот стоит в самой левой (первой) позиции и смотрит направо. Если робот не может выполнить очередную команду программы из-за ограничений, то команда пропускается. Напишите программу, которая моделирует движение робота по заданной программе.
Первая строка ввода содержит одно целое число `N` (`2\ ≤\ N\ ≤\ 10`) – длина комнаты. Вторая строка ввода содержит `N` чисел от 0 до 1 – начальные высоты стопок ящиков. Третья строка ввода содержит программу для робота длиной от 1 до 100 символов, содержащая только символы F, R, D, T, С и возможно символ * после F.
В первой строке вывести одно целое число — позицию робота. Во второй строке вывести высоты стопок ящиков после выполнения программы.

Пример ввода

4
0 1 1 1
TFRDRTRDRFTRD

Пример вывода

3
2 1 0 0
.... (до выполнения
>### программы)
#... (после выполнения
##<. программы)
Описание подзадач и системы оценивания
Подзадача 1 (50 баллов)
Программа для робота содержит только команды R, F, T и D, все команды в программе соответствуют ограничениям. В начальной позиции робота высота стопки равна 0.
В этой подзадаче 10 тестов, каждый тест оценивается в 5 баллов. Баллы за каждый тест начисляются независимо.
Подзадача 2 (50 баллов)
Необходимые подзадачи: 1
Программа может содержать любые команды.
В этой подзадаче 10 тестов, каждый тест оценивается в 5 баллов. Баллы за каждый тест начисляются независимо.
По запросу сообщается результат окончательной проверки на каждом тесте для всех подзадач.
loading