题意:给定一个大矩形和两个小矩形,问两个小矩形是否可以同时放在这个大矩形中。条件是两个小矩形不能重叠(但可以共边)且不能超过大矩形边界。
想法很简单,将一个小矩形放在大矩形左上角,另一个小矩形放在大矩形右下角,看是否重叠即可。不过要注意,有4种放法。因为小矩形可以横着放也可以竖着放,另外就是不要忘了判断是否会超过大矩形边界!
#include <cstdio>
#include <iostream>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <stack>
#include <vector>
#include <map>
#include <set>
using namespace std;
int a1, b1, a2, b2, a3, b3;
bool judge(int x1, int y1, int x2, int y2)
{
return x1 <= a1 && x2 <= a1 && y1 <= b1 && y2 <= b1 && (x1 + x2 <= a1 || y1 + y2 <= b1);
}
void solve()
{
bool flag = false;
flag = flag || judge(a2, b2, a3, b3);
flag = flag || judge(b2, a2, a3, b3);
flag = flag || judge(a2, b2, b3, a3);
flag = flag || judge(b2, a2, b3, a3);
printf("%s\n", flag ? "YES" : "NO");
}
int main()
{
while(scanf("%d%d%d%d%d%d", &a1, &b1, &a2, &b2, &a3, &b3) != EOF)
solve();
return 0;
}