Олимпиадный тренинг

Задача . E. Новая работа Поликарпа


Задача

Темы: реализация *1500

Поликарп недавно устроился на новую работу. Теперь он зарабатывает так много, что его старый кошелек не может вместить все его деньги.

Купюры в Берляндии бывают различных размеров. Однако, все они имеют форму прямоугольника (возможно квадрата). Кошельки также производятся в форме прямоугольников (возможно квадратов).

Купюра \(x \times y\) помещается в некоторых кошелек \(h \times w\), если либо \(x \le h\) и \(y \le w\), либо \(y \le h\) и \(x \le w\). Купюры могут накладываться друг на друга, и в кошелек помещается бесконечное количество купюр. Из этого следует, что все купюры Поликарпа помещаются в кошелек тогда, когда каждая из них помещается независимо от остальных.

Теперь ваша задача — ответить на запросы двух типов:

  1. \(+~x~y\) — Поликарп зарабатывает купюру размера \(x \times y\);
  2. \(?~h~w\) — Поликарп хочет узнать, поместятся ли все его заработанные к текущему моменту купюры в кошелек размера \(h \times w\).

Гарантируется, что до первого запроса типа \(2\) есть хотя бы один запрос типа \(1\) и что во входных данных есть хотя бы один запрос типа \(2\).

Для каждого запроса типа \(2\) выведите «YES», если все заработанные к текущему моменту купюры помещаются в кошелек заданного размера. Выведите «NO» в противном случае.

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

В первой строке записано одно целое число \(n\) (\(2 \le n \le 5 \cdot 10^5\)) — количество запросов.

В каждой из следующих \(n\) строк записан запрос одного из следующих типов:

  1. \(+~x~y\) (\(1 \le x, y \le 10^9\)) — Поликарп зарабатывает купюру размера \(x \times y\);
  2. \(?~h~w\) (\(1 \le h, w \le 10^9\)) — Поликарп хочет узнать, поместятся ли все его заработанные к текущему моменту купюры в кошелек размера \(h \times w\).

Гарантируется, что до первого запроса типа \(2\) есть хотя бы один запрос типа \(1\) и что во входных данных есть хотя бы один запрос типа \(2\).

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

Для каждого запроса типа \(2\) выведите «YES», если все заработанные к текущему моменту купюры помещаются в кошелек заданного размера. Выведите «NO» в противном случае.

Примечание

Запросы типа \(2\) в примере:

  1. Ни одна купюра не помещается;
  2. Обе купюры помещаются (проверяем, что информация о том, что купюры могут накладываться, принята к сведению);
  3. Обе купюры помещаются (на самом деле, обе купюры одинаковые);
  4. Все купюры помещаются (слишком много свободного места в кошельке — это не проблема);
  5. Только купюра \(1 \times 5\) помещается (остальные не помещаются, поэтому ответ «NO»).

Примеры
Входные данныеВыходные данные
1 9
+ 3 2
+ 2 3
? 1 20
? 3 3
? 2 3
+ 1 5
? 10 10
? 1 5
+ 1 1
NO
YES
YES
YES
NO

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя