比赛 |
顾研NOIP2011模拟赛 |
评测结果 |
AWAAAATTTT |
题目名称 |
超空间电台 |
最终得分 |
50 |
用户昵称 |
Truth.Cirno |
运行时间 |
5.097 s |
代码语言 |
C++ |
内存使用 |
7.05 MiB |
提交时间 |
2012-10-17 20:54:19 |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
/*double*/
double data[510][3],map[510][510],R[250010];
int maxM,maxMp,Rnum;
bool type[510];
/*double*/
int main(void)
{
freopen("hyper.in","r",stdin);
freopen("hyper.out","w",stdout);
int i,j,k,n,M,NA[2];
double temp,lastR=0;
cin>>n;
for (i=1;i<=n;i++)
cin>>data[i][0]>>data[i][1]>>data[i][2]>>type[i];
for (i=1;i<=n;i++)
for (j=i+1;j<=n;j++)
{
temp=pow(data[i][0]-data[j][0],2.0)+pow(data[i][1]-data[j][1],2.0)+pow(data[i][2]-data[j][2],2.0);
map[i][j]=temp;
map[j][i]=temp;
R[Rnum++]=temp;
}
sort(R,R+Rnum);
for (i=0;i<Rnum;i++)
{
if (lastR==R[i])
continue;
M=0;
for (j=1;j<=n;j++)
{
NA[0]=0;
NA[1]=0;
for (k=1;k<=n;k++)
{
if (map[j][k]<=R[i])
{
NA[type[k]]++;
}
}
if (NA[type[j]]<NA[!type[j]])
M++;
}
if (maxM<M)
{
maxM=M;
maxMp=i;
}
lastR=R[i];
}
printf("%d\n%.4lf\n",maxM,sqrt(R[maxMp]));
return(0);
}
/*double*/