#include
<
stdio.h
>
#include < sstream >
#include < map >
#include < iostream >
#include < math.h >
using namespace std;
#define N 5;
#define M 5000;
typedef struct Point
{
int x;
int y;
} Point;
Point P[ 50 ] ;
int GetNearest( int i, int j)
{
if (i == j - 1 )
{
return (P[i].x - P[j].x) * (P[i].x - P[j].x) + (P[i].y - P[j].y) * (P[i].y - P[j].y);
}
else
{
int mid = (i + j) / 2 ;
int n1,n2;
if (i < mid)
{
n1 = GetNearest(i,mid);
}
else
{
n1 = M;
}
if (j > mid + 1 )
{
n2 = GetNearest(mid + 1 ,j);
}
else
{
n2 = M;
}
int min = n1;
if (n2 < n1)
{
min = n2;
}
for ( int k = i;k <= mid;k ++ )
{
if (P[k].x >= P[mid].x - n1)
{
for ( int l = mid + 1 ;l <= j;l ++ )
{
if (P[l].x <= P[mid].x + n1)
{
int dis = (P[i].x - P[j].x) * (P[i].x - P[j].x) + (P[i].y - P[j].y) * (P[i].y - P[j].y);
if (dis < min)
{
min = dis;
}
}
}
}
}
return min;
}
}
void main()
{
for ( int i = 0 ;i < 50 ;i ++ )
{
P[i].x = i;
P[i].y = 2 * i;
}
P[ 5 ].x = 5 ;
P[ 5 ].y = 9 ;
int mindis = GetNearest( 0 , 49 );
}
#include < sstream >
#include < map >
#include < iostream >
#include < math.h >
using namespace std;
#define N 5;
#define M 5000;
typedef struct Point
{
int x;
int y;
} Point;
Point P[ 50 ] ;
int GetNearest( int i, int j)
{
if (i == j - 1 )
{
return (P[i].x - P[j].x) * (P[i].x - P[j].x) + (P[i].y - P[j].y) * (P[i].y - P[j].y);
}
else
{
int mid = (i + j) / 2 ;
int n1,n2;
if (i < mid)
{
n1 = GetNearest(i,mid);
}
else
{
n1 = M;
}
if (j > mid + 1 )
{
n2 = GetNearest(mid + 1 ,j);
}
else
{
n2 = M;
}
int min = n1;
if (n2 < n1)
{
min = n2;
}
for ( int k = i;k <= mid;k ++ )
{
if (P[k].x >= P[mid].x - n1)
{
for ( int l = mid + 1 ;l <= j;l ++ )
{
if (P[l].x <= P[mid].x + n1)
{
int dis = (P[i].x - P[j].x) * (P[i].x - P[j].x) + (P[i].y - P[j].y) * (P[i].y - P[j].y);
if (dis < min)
{
min = dis;
}
}
}
}
}
return min;
}
}
void main()
{
for ( int i = 0 ;i < 50 ;i ++ )
{
P[i].x = i;
P[i].y = 2 * i;
}
P[ 5 ].x = 5 ;
P[ 5 ].y = 9 ;
int mindis = GetNearest( 0 , 49 );
}