记录编号 26997 评测结果 AAAAWWAWWW
题目名称 遥远的距离 最终得分 50
用户昵称 Gravatar.Xmz 是否通过 未通过
代码语言 C++ 运行时间 3.744 s
提交时间 2011-07-30 16:18:56 内存使用 6.37 MiB
显示代码纯文本
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <cstring>

using namespace std;

double inx[200001],iny[200001];
double x[200001],y[200001];
int n,m;
void init()
{
	scanf("%d%d",&n,&m);
	for (int i=1;i<=n+m;i++)
	{
		scanf("%lf%lf",&x[i],&y[i]);
		inx[i]=x[i];iny[i]=y[i];
	}
}

double dis(int i,int j)
{
	return sqrt((inx[i]-inx[j])*(inx[i]-inx[j])+(iny[i]-iny[j])*(iny[i]-iny[j]));
}

void solve()
{
	double ans=0;
	for (int t=1;t<=200;t++)
	{
		int rnd=rand();
		double dsin=sin(rnd);
		double dcos=cos(rnd);
		int i1=1,i2=1,i3=n+1,i4=n+1;
		for (int i=1;i<=n+m;i++)
		{
			double tx=x[i],ty=y[i];
			x[i]=tx*dcos-ty*dsin;y[i]=tx*dsin+ty*dcos;
			if (i<=n)
			{
				if (x[i]>x[i1]) i1=i;
				if (x[i]<x[i2]) i2=i;
			}
			else
			{
				if (x[i]>x[i3]) i3=i;
				if (x[i]<x[i4]) i4=i;
			}
		}
		if (dis(i1,i4)>ans) ans=dis(i1,i4);
		if (dis(i2,i3)>ans) ans=dis(i2,i3);
	}
	printf("%0.3lf\n",ans);
}

int main()
{
	freopen("faraway.in","r",stdin);
	freopen("faraway.out","w",stdout);
	srand(time(0));
	int T;
	scanf("%d",&T);
	for (;T;--T)
	{
		init();
		solve();
	}
	return 0;
}