Skip to content

lensky84/brain-warm-up_v3-fire-and-ice

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Brain warm-up #3: Fire & Ice

Властелин Огня напал на Страну Холода. Он уже добрался до ледяной крепости, где живет Снежная Королева, и выстроил свое войско на отрезке длины n недалеко от стен замка. И только ледяной маг Соломон может спасти Страну Холода.

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

Изначально Соломон находится на стене крепости. Он может несколько раз подряд выполнять следующие действия:

  • > — Соломон перемещается на единицу вправо. Это действие нельзя делать если справа нет ледяного блока.
  • < — Соломон перемещается на единицу влево. Это действие нельзя делать на стене замка.
    • — если перед Соломоном ничего нет, то Соломон создает ледяной блок, который сразу же примораживается к блоку, на котором Соломон сейчас стоит. Если же там уже есть ледяной блок, то Соломон его уничтожает. При этом могут остаться ледяные блоки правее только что уничтоженного и они остаются без опоры. Эти ледяные блоки падают вниз. На каждое из этих действий Соломон тратит ровно одну секунду.

В результате действий Соломона вниз падают отрезки из ледяных блоков. Когда на огненного демона падает ледяной блок, блок превращается в пар, а сила демона уменьшается на 1. Когда сила огненного демона становится равной 0, огненный демон исчезает. Как это происходит, можно посмотреть на рисунке ниже. Ледяной блок, упавший на позицию, где нет демона, разбивается на множество мелких осколков и исчезает, не нанося никому повреждений.

Помогите Соломону за наименьшее время уничтожить все войско Властелина Огня.

Входные данные

В первой строке находится целое число n (1 ≤ n ≤ 1000). В следующей строке находятся n чисел. i-ое из них означает силу огненного демона на i-ой позиции — целое число от 1 до 100. Если в i-ой позиции нет демона, то i-е число равно 0. Гарантируется, что во входных данных имеется хотя бы один огненный демон.

Выходные данные

Выведите строку наименьшей длины, состоящую из символов «>», «<» и «*» — последовательность действий, приводящую к искомому результату.

Если возможных ответов несколько — выведите любой.

Пример


Позиции демонов: 1 0 1

Действия Соломона: *>*>*>*<<<*


Позиции демонов: 0 2 0

Действия Соломона: *>*>*<**>*<*

Прототип задачи стянут с codeforces.ru

Workflow

  • Форкаем репозиторий, создаем бранч вида %login%-solution.
  • Запускаем в корне php composer.phar install для автозагрузки классов
  • Заменяем везде YourGitHubLogin на свой логин от GitHub (не забываем об PSR-0) в папке src\
  • Пишем код, запускаем тесты (просто vendor/bin/phpunit в папке с проектом), и т.д.
  • Проверяем стиль кода через phpcs (PRS-2), отсутствие дубликатов черех phpcpd (пример смотреть в .travis.yml)
  • Когда все тесты проходят, комментарии написаны, код отрефакторен — отправляем PR в master-ветку.

About

Brain warm-up #3: Fire & Ice

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%