记录编号 325086 评测结果 AAAAAAAAAA
题目名称 [NOIP 2010PJ]导弹拦截 最终得分 100
用户昵称 Gravatar农场主 是否通过 通过
代码语言 C++ 运行时间 0.264 s
提交时间 2016-10-19 07:19:10 内存使用 1.80 MiB
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 100000
using namespace std;
class poi{
public:
	int x,y;
}p[maxn];
class node{
public:
	int d1,d2;
	bool operator < (const node e)const{
		if (d1==e.d1) return d2<e.d2;
		else return d1<e.d1;
	}
}s[maxn];
int d[maxn]={0};
int maxv[maxn]={0};
int x1,y1,x2,y2,n;
void read(){
	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		scanf("%d%d",&p[i].x,&p[i].y);
	}
}
int sqr(int x){
	return x*x;
}
void work(){
	for (int i=1;i<=n;i++){
		s[i].d1=sqr(abs(p[i].x-x1))+sqr(abs(p[i].y-y1));
		s[i].d2=sqr(abs(p[i].x-x2))+sqr(abs(p[i].y-y2));
	}
	sort(s+1,s+n+1);
//	for (int i=1;i<=n;i++){
//		printf("%d %d\n",s[i].d1,s[i].d2);	
//	}
	for (int i=n;i>=1;i--){
		maxv[i]=max(maxv[i+1],s[i].d2);
	}
	int ans=1<<29;
	maxv[n+1]=0;
	for (int i=1;i<=n;i++){
		ans=min(ans,s[i].d1+maxv[i+1]);
	}
	printf("%d",ans);
}
int main(){
	freopen("missile2.in","r",stdin);
	freopen("missile2.out","w",stdout);
	read();
	work();
	return 0;
}