8.1 Геттеры, сеттеры и инкапсуляция

8.1.2 Границы диапазона

Условие

Реализуйте класс Range с закрытыми целочисленными полями нижней и верхней границ. Начальный диапазон — [0, 100]. Геттеры int get_lower() const и int get_upper() const возвращают границы; метод bool contains(int value) const проверяет принадлежность включительному диапазону.

Метод bool set_lower(int value) изменяет нижнюю границу, только если она не больше текущей верхней. Метод bool set_upper(int value) изменяет верхнюю границу, только если она не меньше текущей нижней. Метод bool set_bounds(int lower, int upper) меняет обе границы одновременно при lower ≤ upper. При отказе любой сеттер возвращает false и сохраняет обе прежние границы. При успехе он возвращает true.

Обработайте команды: LOWER value, UPPER value, BOUNDS lower upper, CONTAINS value. Изменение диапазона выполняйте только через сеттеры.

Ограничения

Время: 2 секунды. Память: 64 МиБ. Вывод: до 2 МиБ. Язык: C++17.

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

В первой строке вводится Q. Следующие Q строк содержат команды указанного вида. Ограничения: 1 ≤ Q ≤ 1000, все числовые аргументы находятся в диапазоне от −10000 до 10000. Для BOUNDS правильный порядок границ не гарантируется.

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

Для каждой команды изменения выведите OK или ERROR, затем текущие нижнюю и верхнюю границы через пробел. Для CONTAINS выведите только YES или NO.

Примеры

Вход 1
4
LOWER 10
UPPER 20
CONTAINS 15
CONTAINS 21
Ожидаемый выход
OK 10 100
OK 10 20
YES
NO
Вход 2
4
LOWER 101
BOUNDS 8 3
UPPER -1
CONTAINS 0
Ожидаемый выход
ERROR 0 100
ERROR 0 100
ERROR 0 100
YES
Вход 3
3
BOUNDS -5 -5
CONTAINS -5
LOWER -4
Ожидаемый выход
OK -5 -5
YES
ERROR -5 -5

Пробный запуск

Код берётся из редактора. Запуск не создаёт посылку и не влияет на баллы.

Выберите пример или введите свои данные и нажмите «Запустить».

Текущая попытка

Отправьте решение. Этапы и результат появятся здесь автоматически.

Все попытки

Войдите, чтобы видеть свои попытки.

Редактор

Один файл до 64 КиБ · Tab / Shift+Tab — отступ · Esc — выход из редактора · черновик сохраняется для этого аккаунта, задачи и языка.