比赛 防止颓废的小练习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;
}