#include
<
iostream
>
using
namespace
std;
#define
MAXN 100
typedef
struct
point_st {
double
x,y;
}
*
point_t;
point_st points[MAXN]
=
{
0
};
int
main() {
int
N,i,j;
double
d,max_d_sqt
=
-
1
,x,y;
point_st pointA, pointB;
cin
>>
N;
for
(i
=
0
;i
<
N;i
++
)
cin
>>
points[i].x
>>
points[i].y;
for
(i
=
0
;i
<
N;i
++
) {
d
=
points[i].x
*
points[i].x
+
points[i].y
*
points[i].y;
if
(max_d_sqt
<
d) {
max_d_sqt
=
d;
pointA
=
points[i];
}
}
printf(
"
0 0 %.12lf\n
"
, pow(max_d_sqt,
0.5
));
return
0
;
}
题目就是要求一点,以该点为圆心作一个半径R的圆,至少有一个已给出的点在该圆上,而其他点则在该圆内。
很坑爹的一题,首先是主角要传送的地点竟然可以是原来的点,即不动
而且,题目给出点坐标的绝对值不大于1000,但冰墙的半径却可以是不大于10000,那就简单了。
如果条件苛刻点,可以考虑求出所有点构成的线段的中点,然后对所有中点求出到每一点的距离,选择最大的距离作为半径,该中点作为圆心。

