#P1169. Packing Rectangles

Packing Rectangles

题目描述

给定 4 个矩形,要求找到一个面积最小的新矩形,使得这 4 个矩形能够不重叠地放入其中,并且所有矩形的边必须与外包矩形的对应边平行

  • 最小外包矩形:指所有可行解中面积最小的矩形。
  • 基本排列方式:共有 6 种基本布局(如图1所示),其他任何排列方式均可通过这 6 种基本布局旋转或镜像得到。
  • 可能存在多个解(即多个不同长宽组合的外包矩形具有相同的最小面积)。

输入

程序从标准输入读取数据:

  • 输入共 4 行,每行描述一个矩形,包含 2 个正整数(表示矩形的边长,范围 1边长501 \leq \text{边长} \leq 50)。

输出

程序向标准输出写入结果:

  1. 第一行:一个整数,表示最小外包矩形的面积
  2. 后续行:每行输出一个解,格式为 p qp \ qpqp \leq q,表示外包矩形的长和宽)。
    • 所有解必须pp 升序排列
    • 必须保证所有解互不相同

输入样例 1

1 2  
2 3  
3 4  
4 5  

输出样例 1

40  
4 10  
5 8  

补充说明

  • 6 种基本布局
    1. 直线排列(4 个矩形排成一行或一列)
    2. 2×2 方块排列(两行两列)
    3. 3+1 排列(3 个矩形排成一行,第 4 个矩形垂直或水平拼接)
    4. 2+1+1 排列(2 个矩形排成一行,另外 2 个分别垂直或水平拼接)
    5. L 形排列(3 个矩形组成 L 形,第 4 个矩形填补空缺)
    6. Z 形排列(交错排列,类似阶梯形状)
  • 优化目标:在所有可能的排列方式中,找到面积最小的外包矩形,并输出所有可能的长宽组合。