Поверніть та/або вилучіть прямокутники

Перегляд у форматі PDF

Надіслати розв'язок

Бали: 5,00 (partial)
Time limit: 0.5s
Memory limit: 256M
Input: stdin
Output: stdout

Suggester:
Problem types

В ряд стоять ~n~ прямокутників. Кожний з них ви можете або повернути на 90 градусів або залишити так, як він і був спочатку. Якщо ви повертаєте прямокутник, то його висота стає шириною, а ширина – висотою. Ви можете повернути будь-яку кількість прямокутників, ви можете повернути всі прямокутники, або не повертати ні одного прямокутника. Не можна міняти порядок прямокутників, але можна забирати деякі з них (будь-які, в будь-якій кількості й не обов'язково підряд).

Вам потрібно, використовуючи (чи не використовуючи, як вигідніше) дозволені операції «повернути прямокутник на 90 градусів» та/або «забрати прямокутник» добитися, щоб залишені прямокутники йшли в порядку незростання висоти. Іншими словами, після всіх поворотів та/або забирань або повинен залишитися тільки один прямокутник, або висота кожного наступного прямокутника повинна бути менша або рівна за висоту прямокутника перед ним.

Очевидно, що залишити тільки один прямокутник можна завжди; однак, потрібно залишити (можливо, повернувши деякі на 90 градусів) максимальну можливу кількість прямокутників: якщо можна всі – значить, треба залишити всі ~n~; якщо не можна всі, але можна забрати тільки один – значить, треба залишити ~n-1~; і так далі.

Вхідні дані

Перший рядок містить одне ціле число ~n~ (~1\leqslant n\leqslant 1000~) – кількість прямокутників. Кожний з наступних ~n~ рядків містить по два цілих числа w[i], h[i] (~1\leqslant w[i], h[i]\leqslant 10^9~) – спочатку ширина, потім висота ~i~-го прямокутника.

Результати

Виведіть єдине число – максимальну кількість прямокутників, які можна залишити (можливо, повернувши деякі на 90 градусів) так, щоб залишені йшли за незростанням висоти.

Приклад

Вхід

3
3 4
4 6
3 5

Результат

3

Вхід

5
3 4
5 6
7 8
10 12
17 42

Результат

1

Вхід

5
3 14
15 9
2 6
12 15
17 7

Результат

3

Примітки

У першому тесті, можна лишити прямокутник ~3\times 4~ як є, решту повернути, щоб вийшло ~6\times 4~ та ~5\times 3~; тоді виконується незростання висот ~4\geqslant 4\geqslant 3~.

У другому тесті, як не крути і як не вилучай прямокутники, а заборона переставляти їх місцями призводить до неможливості утворити два чи більше прямокутники, щоб висота наступного була меншою чи рівною висоті попереднього.

У третьому тесті, єсть багато різних способів отримати послідовність з трьох прямокутників незростанням висот:

  • ~12\times 15~ та ~17 \times 7~ забрати, решту лишити як є (не обертати), виходить ~14\geqslant9\geqslant6~;
  • ~2\times 6~ та ~12\times 15~ забрати, решту лишити як є (не обертати), виходить ~14\geqslant9\geqslant7~;
  • ~3\times 14~ та ~2\times 6~ забрати, ~15\times 9~ повернути, щоб вийшло ~9\times 15~, решту лишити як є, виходить ~15\geqslant15\geqslant7~;
  • ~3\times 14~ та ~2\times 6~ забрати, повернути два прямокутники ~(15\times 9)\to(9\times 15)~ та ~(12\times 15)\to(15\times 12)~, виходить ~15\geqslant12\geqslant7~.

Але не існує жодного способу зробити незростаючу послідовність висот, вилучивши в третьому тесті лише один прямокутник.


Коментарі

Please read the guidelines before commenting.


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