Description

standard input/output
Statements

Alex is repairing his country house. He has a rectangular metal sheet of size a × b. He has to cut two rectangular sheets of sizes a1 × b1and a2 × b2 from it. All cuts must be parallel to the sides of the initial sheet. Determine if he can do it.

Input

The first line contains two space-separated integers a and b (1 ≤ a, b ≤ 109) — the sizes of the initial sheet.

The second line contains two space-separated integers a1 and b1 (1 ≤ a1, b1 ≤ 109) — the sizes of the first sheet to cut out.

The third line contains two space-separated integers a2 and b2 (1 ≤ a2, b2 ≤ 109) — the sizes of the second sheet to cut out.

Output

Output «YES» (without quotes), if it's possible to cut two described sheets from the initial sheet, or «NO» (without quotes), if it's not possible.

Sample Input

Input
12 20
14 7
5 6
Output
YES
Input
12 20
11 9
20 7
Output
NO

枚举那两个小长方形的形状,要么躺着,要么倒着,
然后位置关系也有2中,上下或者左右。一共8种情况
枚举有技巧,不用全部写if。考怒写循环。
固定1,枚举2的两种形状,枚举2的位置关系。
固定2,枚举1的两种形状,枚举1的位置关系。
这样做的话,没法做到同时转换1和转换2.
那么考虑转换大长方形再来一次,就能考怒完全部。
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL; #include <iostream>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <queue>
#include <string>
struct data {
int row, col;
} a[];
bool check(int torow, int tocol) {
if (torow <= a[].row && tocol <= a[].col) return true;
else return false;
}
void work() {
for (int i = ; i <= ; ++i) {
cin >> a[i].row >> a[i].col;
}
bool flag = false;
for (int i = ; i <= && !flag; ++i) {
if (check(max(a[].row, a[].row), a[].col + a[].col)) {
flag = true;
}
if (check(a[].row + a[].row, max(a[].col, a[].col))) {
flag = true;
}
swap(a[].row, a[].col);
}
// cout << a[3].row << " " << a[3].col << endl;
for (int i = ; i <= && !flag; ++i) {
if (check(max(a[].row, a[].row), a[].col + a[].col)) {
flag = true;
}
if (check(a[].row + a[].row, max(a[].col, a[].col))) {
flag = true;
}
swap(a[].row, a[].col);
}
swap(a[].row, a[].col);
for (int i = ; i <= && !flag; ++i) {
if (check(max(a[].row, a[].row), a[].col + a[].col)) {
flag = true;
}
if (check(a[].row + a[].row, max(a[].col, a[].col))) {
flag = true;
}
swap(a[].row, a[].col);
}
// cout << a[3].row << " " << a[3].col << endl;
for (int i = ; i <= && !flag; ++i) {
if (check(max(a[].row, a[].row), a[].col + a[].col)) {
flag = true;
}
if (check(a[].row + a[].row, max(a[].col, a[].col))) {
flag = true;
}
swap(a[].row, a[].col);
} if (flag) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
} int main() {
#ifdef local
freopen("data.txt","r",stdin);
#endif
work();
return ;
}
 

最新文章

  1. [LeetCode] Trapping Rain Water 收集雨水
  2. js日期相关
  3. Socket异步通讯
  4. js 比较好的博客
  5. Linux远程传输命令之scp使用方法
  6. Leetcode008. String to Integer (atoi)
  7. DB2行转列(多维度)
  8. 深入分析Java Web开发
  9. 计算机程序的思维逻辑 (70) - 原子变量和CAS
  10. C#实现分页组件
  11. 【一天一道LeetCode】#86. Partition List
  12. Ocelot中文文档-请求聚合
  13. Intellij idea 离线安装activiti工作流插件
  14. Java核心技术梳理-泛型
  15. ssm框架结构的搭建
  16. 如何将revit模型背景设置为黑色
  17. CentOS6.5下搭建VNC服务器
  18. Asp.net core 2.0.1 Razor 的使用学习笔记(六)
  19. 〖Android〗依据资源信息,Mock Android资源
  20. Spark SQL 基本原理

热门文章

  1. UOJ #348 州区划分 —— 状压DP+子集卷积
  2. Python:内置函数makestrans()、translate()
  3. web攻击之四:DOS攻击
  4. js---倒计时的自动跳转.html
  5. python 基础 序列化
  6. Centos6.5_64位系统下安装Oracle 11g
  7. C++中的构造函数小结
  8. 第六课 ROS的空间描述和变换
  9. 网页游戏开发秘笈 PDF扫描版
  10. Unity3D 脚本模板修改方法