输入的第一行是一个整数,为数据的组数t(t<=1000)。
每组数据占一行,包括4个数A,B,R1,R2,均为不超过1e4的正整数。
对于每组数据,若两个宝石能放进盒子中,则输出YES,否则输出NO。
2 10 10 1 1 10 10 4 4
YES NO
代码:
#include <iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int a,b,r1,r2;
scanf("%d%d%d%d",&a,&b,&r1,&r2);
if(a<b) swap(a,b); //这条语句使得a>b
if(r1<r2) swap(r1,r2); //这条语句使得r1>r2
if(2*r1>b) //如果大圆的直径>矩形的宽,则一定放不下圆柱形宝石
{
printf("NO\n");
continue;
}
int x=b-r2-r1,y=a-r1-r2;
int z=r1+r2;
if(x*x+y*y>=z*z) printf("YES\n"); //通过画图能知道这个关系
else printf("NO\n");
}
return 0;
}