P1158 [NOIP2010 普及组] 导弹拦截 这道题不知道怎么一直显示超时......
#include<bits/stdc++.h>
using namespace std;
int n,a[100001],b[100001];
int main()
{
int i,j,x,y,max2,x1,y1,x2,y2,r1,r2,min2,ans;
cin>>x1>>y1>>x2>>y2;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>x>>y;
a[i]=(x-x1)*(x-x1)+(y-y1)*(y-y1);
b[i]= (x-x2)*(x-x2)+(y-y2)*(y-y2);
}
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(a[i]>a[j])
{
swap(a[i],a[j]);
swap(b[i],b[j]);
}
min2=987654321;
for(i=n;i>=0;i--)
{
ans=a[i];
max2=0;
for(j=i+1;j<=n;j++)
if(b[j]>max2)
max2=b[j];
if(a[i]+max2<min2)
min2=a[i]+max2;
}
cout<<min2<<endl;
return 0;
}
求大神看看!