10627: Type Printer


Відправити розв'язок

Бали: 100 (partial)
Time limit: 2.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
Brain****, C++, Java, Pascal, Python, v8js

Вам потрібно надрукувати \(N\)-слів на Movable Type Printer. Movable Type Printers – це старі принтери, для роботи яких потрібно ставити маленькі металеві шматочки (кожен із шматочків містить одну літеру) у певному порядку, утворюючи таким чином слова. Потім усі вони вдавлюються в аркуш паперу. Таким чином, друкується одне слово. Ваш принтер дозволяє виконувати такі операції:

  • Додати літеру до кінця слова, що знаходиться зараз на принтері.
  • Видалити останню літеру зі слова, яке зараз знаходиться на принтері. Цю операцію можна робити тільки якщо слово містить хоча б одну букву.
  • Надрукувати слово, що знаходиться на принтері (при цьому слово нікуди не зникає, можна друкувати його ще раз).
  • Спочатку принтер містить пусте слово. Наприкінці друку можна залишити непорожнє слово. Слова, які вам дано, ви можете друкувати у довільному порядку.

Кожна із трьох операцій займає одну одиницю часу. Вам потрібно знайти послідовність операцій, які друкують дані \(N\) слів за мінімальний час. Якщо мінімальних послідовностей кілька, виведіть будь-яку.

Формат вхідних даних

Ваша програма повинна обробити наступні вхідні дані:

У першому рядку число \(N\) (\(1 \le N \le 25000\)).

У наступних \(N\) рядках слова складаються з маленьких букв латинського алфавіту. Довжина кожного слова пом ізається у 20. Усі слова різні.

Формат вихідних даних

Ваша програма має вивести такі дані:

У першому рядку \(M\) – число операцій.

У наступних \(M\) рядках по одному символу - опис операцій. Кожна операція описується одним символом:

  • Додавання символу позначається символом.
  • Видалення символу позначається символом - (мінус, ASCII-код 45).
  • Операція "надрукувати поточне слово" позначається символом "P" (велика латинська літера P).

Приклад вхідних даних-1

3
print
the
poem

Приклад вихідних даних-1

20
t
h
e
P
-
-
-
p
o
e
m
P
-
-
-
r
i
n
t
P

Коментарі

Ще немає коментарів.