记录编号 |
26997 |
评测结果 |
AAAAWWAWWW |
题目名称 |
遥远的距离 |
最终得分 |
50 |
用户昵称 |
.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;
}