URAL 1234. Bricks

试了3个方向能不能放进去。笔算的公式,没有用到反三角函数。

#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
#define eps 1e-9
int dcmp(double a){
	return (a>-eps)-(a<eps);
}
double D,E;
void swap(double &a,double &b){
	if(a>b){
		double  t=a;
		a=b;
		b=t;
	}
}
bool F(double A,double B){
	if(dcmp(A-D)>0&&dcmp(B-D)>0) return 0;
	if(dcmp(A-D)<=0&&dcmp(B-D)<=0) return 1;
	swap(A,B);
	double t=(B-sqrt(A*A+B*B-D*D))/(A+D);
	double D1=(B*(B+E)-A*(A+D))*t;
	double D2=B*D-A*E;
	return dcmp(D1-D2)>=0;
}
int main(void)
{
	double A,B,C;
	while(cin>>A>>B>>C>>D>>E){
		swap(D,E);
		int T;
		T=F(A,B)||F(B,C)||F(A,C);
		if(T) cout<<"YES"<<endl;
		else cout<<"NO"<<endl;
	}
return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值