比赛 |
防止颓废的小练习v0.2 |
评测结果 |
AAAAAAAAAA |
题目名称 |
导弹拦截 |
最终得分 |
100 |
用户昵称 |
Ten.X |
运行时间 |
0.098 s |
代码语言 |
C++ |
内存使用 |
2.22 MiB |
提交时间 |
2016-10-18 18:49:11 |
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,i,k,X1,X2,Y1,Y2,zj1,zj2,ans;
struct www{
int x,y,dis1,dis2,bh;
bool operator<(const www&c)const
{
return (dis1<c.dis1)||(dis1==c.dis1&&dis2>c.dis2);
}
}a[100001];
int MAX(int c,int v){if(c>v)return c;return v;}
int MIN(int c,int v){if(c>v)return v;return c;}
void init()
{
scanf("%d%d%d%d",&X1,&Y1,&X2,&Y2);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i].x,&a[i].y);
zj1=a[i].x-X1;zj1*=zj1;
zj2=a[i].y-Y1;zj2*=zj2;
a[i].dis1=zj1+zj2;
zj1=a[i].x-X2;zj1*=zj1;
zj2=a[i].y-Y2;zj2*=zj2;
a[i].dis2=zj1+zj2;
}
sort(a+1,a+(n+1));
}
void work()
{
ans=a[n].dis1;
k=0;
for(i=n;i>0;i--)
{
ans=MIN(ans,a[i].dis1+k);
k=MAX(k,a[i].dis2);
}
}
int main()
{
freopen("missile2.in","r",stdin);
freopen("missile2.out","w",stdout);
init();
work();
printf("%d\n",ans);
return 0;
}