АВТ
Language:

Remote Training on Programming

Problems On-line status Contests FAQ
For authors:
Register  ||  Login
 
Hello, Guest! Login or register.

207. Открытки и конверты

Time Limit: 1 seconds
Memory Limit:64000KB
Points:10
View Problem Statistics Submit Problem added Undefined

Жюри решило поздравить авторов метода Форда-Фалкерсона, алгоритмов Флойда-Беллмана, Кнута-Морриса-Пратта, формы Бэкуса-Науэра, схемы Ривеста-Шамира-Адлемана и других классиков Computer Science с наступающим 4 июля (Днем независимости). Для этого было куплено N открыток и M конвертов. К сожалению, конверты и открытки оказались разных размеров, и некоторые открытки помещаются не во все конверты. Напишите программу, находящую такое распределение открыток по конвертам, при котором поздравления получат наибольшее число классиков Computer Science. В один конверт разрешается вкладывать не более одной открытки. 

Input

В первой строке входного файла записаны числа M и N (0 ≤ M, N ≤ 100). Далее записаны высота и ширина каждого из M конвертов, затем - высота и ширина каждой из N открыток. Размеры конвертов и открыток являются натуральными числами, не превосходящими 32767, и разделяются пробелами и/или символами перевода строки.

Output

Выведите в выходной файл целое число K - максимальное количество открыток, которые можно разложить по конвертам. Далее выведите K пар целых чисел, означающих номер открытки и номер конверта, в который ее необходимо положить.

Sample

InputOutput
4 4
3 3 141 282 282 141 200 100
3 1 140 280 141 282 201 1
4
1 1 2 3 3 2 4 4

Solution

Построим двудольный граф, вершинами первой доли которого являются открытки, вершинами второй доли – конверты, а существование ребра между вершинами двух долей соответствует возможности вложения данной открытки в данный конверт. Тем самым, исходная задача распалась на две. Одна из них состоит в определении возможности поместить один прямоугольник внутрь другого (не забывайте, что открытку в конверт можно вкладывать под углом) и решается с использованием несложных геометрических соображений (см. решение задачи 10 в [Бадин 95]). Другая задача – нахождение наибольшего паросочетания в полученном графе.


View Problem Statistics Submit Author/source:
Sorted Problems / Graphs /
206. Ориентация графа 207. 204. Пиво в розлив 196. Покрытие путями 195. Поможем МПС
Educational Courses / Data Structures and Algorithms / Graph Algorithms /
205. Игра в города 207. 247. Удаление клеток
Problems from Contests / Trainings of Vologda STU / Training 04.10.2006 /
206. C - Ориентация графа 207. 208. E - Михаил Густокашин против бюрократии
We can all benefit by doing occasional "toy" programs, when artificial restrictions are set up, so that we are forced to push our abilities to the limit. The art of tackling miniproblems with all our energy will sharpen our talents for the real problems. Donald E. Knuth.
time generating 0.28 sec.
© Copyright VSTU, AVT, Nosov D.A.