比赛 |
EYOI与SBOI开学欢乐赛7th |
评测结果 |
WWWAWWWWWW |
题目名称 |
聪明的猴子 |
最终得分 |
10 |
用户昵称 |
该账号已注销 |
运行时间 |
0.236 s |
代码语言 |
C++ |
内存使用 |
5.78 MiB |
提交时间 |
2022-09-23 20:53:46 |
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct pt{
int x;
int y;
}p[1010];
int n,m,jp[510],r=0,l=0x3f3f3f3f,ans=0;
int dis[1010][1010];
bool v[1010];
bool ck(int x){
memset(v,0,sizeof(v));
v[1]=1;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if(dis[i][j]<=x&&v[i]==1){
v[j]=1;
}
if(dis[i][j]<=x&&v[j]==1){
v[i]=1;
}
}
}
for(int i=1;i<=n;i++){
if(v[i]==0)return 0;
}
return 1;
}
int main(){
freopen("monkey.in","r",stdin);
freopen("monkey.out","w",stdout);
cin>>m;
for(int i=1;i<=m;i++){
cin>>jp[i];
r=max(r,jp[i]);
l=min(l,jp[i]);
}
cin>>n;
sort(jp+1,jp+m+1);
for(int i=1;i<=n;i++){
int x;int y;
cin>>x>>y;
p[i].x=x+1000;
p[i].y=y+1000;
}
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
dis[i][j]=(p[i].x-p[j].x)*(p[i].x-p[j].x)+(p[i].y-p[j].y)*(p[i].y-p[j].y);
}
}
while(l<r){
int mid=(l+r)>>1;
if(ck(mid*mid)==1)r=mid;
else l=mid+1;
}
for(int i=1;i<=n;i++){
if(jp[i]>=l){
ans++;
}
}
cout<<ans<<endl;
return 0;
}