Розбиття на прямокутники
Обмеження: 2 сек., 256 МіБ
У Марічки на площині є точки (x,y) для всіх таких цілих чисел x,y, що 0≤x<n,0≤y<m. Вона з’єднала деякі k пар точок між собою.
Зеник хоче розбити всю область на прямокутники так, аби з’єднані між собою точки належали різним прямокутникам. Для цього він вибирає натуральні числа a та b такі, що a≤n,b≤m, і проводить горизонтальну лінію кожні a точок і вертикальну — кожні b точок. Отже, область буде розділена на ⌈na⌉⋅⌈mb⌉ (ділення із заокругленням угору) прямокутників. Більш формально, точка (x,y) належатиме прямокутнику з координатами (⌊xa⌋,⌊yb⌋) (цілочисельне ділення).
Марічка сказала Зеникові, що вона не любить маленькі прямокутники. Тому Зеник повинен максимізувати добуток a⋅b.
Допоможіть Зеникові, напишіть йому програму.
Вхідні дані
У першому рядку є три цілі числа n, m, k.
У наступних k рядках є по чотири цілих числа x1,y1,x2,y2. Це означає, що точка (x1,y1) з’єднана з точкою (x2,y2).
Вихідні дані
В одному рядку виведіть ціле число — максимально можливий добуток a⋅b.
Обмеження
1≤n,m≤200,
1≤k≤105,
0≤x<n,0≤y<m для всіх точок, що зустрічаються у вводі,
(x1,y1)≠(x2,y2) для всіх пар точок, що з’єднані між собою,
кожна пара точок, що з’єднані між собою, зустрічається тільки один раз,
для 15 тестів виконуються додаткові обмеження n,m≤100,k≤103.
Приклади
Вхідні дані (stdin) | Вихідні дані (stdout) |
---|---|
4 7 7 0 6 1 2 1 3 2 2 3 4 2 0 3 2 1 1 0 1 0 4 0 5 3 5 3 6 1 6 | 9 |
Примітки
У прикладі оптимально вибрати a=3,b=3.