eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Дек з захистом від помилок

Дек з захистом від помилок

Ліміт часу 2 секунди
Ліміт використання пам'яті 128 MiB

Реалізуйте структуру даних "дек". Напишіть програму, яка містить опис дека і моделює роботу дека, реалізувавши усі вказані тут методи. Програма зчитує послідовність команд і у залежності від команди виконує ту чи іншу операцію. Після виконання кожної команди програма повинна вивести один рдок. Можливі команди для програми:

push_front

Додати (покласти) у початок дека новий елемент. Програма повинна вивести ok.

push_back

Додати (покласти) у кінець дека новий елемент. Програма повинна вивести ok.

pop_front

Дістати з дека перший елемент. Програма повинна вивести його значення.

pop_back

Дістати з дека останній елемент. Програма повинна вивести його значення.

front

Взнати значення першого елемента (не видаляючи його). Програма повинна вивести його значення.

back

Взнати значення останнього елемента (не видаляючи йоего). Програма повинна вивести його значення.

size

Вивести кількість елементів у декі.

clear

Очистити дек (видалити з нього усі елементи) і вивести ok.

exit

Програма повинна вивести bye і завершити роботу.

Гарантується, що кількість елементів у декі у довільний момент не перевищує 100. Перед виконанням операцій pop_front, pop_back, front, back програма повинна перевіряти, чи міститься у декі хоча б один елемент. Якщо у вхідних даних зустрічається операція pop_front, pop_back, front, back, і при цьому дек порожній, то програма повинна замість числового значення вивести рядок error.

// Java OOP
class MyDeque // from problem 6128 Simple deque
{
  protected LinkedList<Integer> v;
  ...
}

class ErrorProtectedDeque extends MyDeque
{
  final static int ERROR = -2000000000;
  public int pop_front();  // in the cases of error, return ERROR
  public int pop_back();  // in the cases of error, return ERROR
  public int front(); // in the cases of error, return ERROR
  public int back();  // in the cases of error, return ERROR
}

Вхідні дані

Кожний рядок містить одну команду.

Вихідні дані

Для кожної команди виведіть в окремому рядку відповідний результат.

Приклад

Вхідні дані #1
front
back
pop_back
pop_front
exit

Вихідні дані #1
error
error
error
error
bye
Вхідні дані #2
push_back 1
back
exit
Вихідні дані #2
ok
1
bye