你有一块凸多边形形状的平整巧克力。你需要用一把直刀将其切成面积完全相等的两块。
编写一个程序,对于给定的凸多边形,计算将该多边形平分为两个相等面积的线段的最大长度和最小长度。
下图对应前两个样例输入。图中每块巧克力上的两条虚线分别对应平分面积的最小长度切线和最大长度切线。
图 F.1. 巧克力样本与切线
输入格式
输入包含单个测试用例,格式如下:
$n$ $x_1 \ y_1$ $\vdots$ $x_n \ y_n$
第一行包含一个整数 $n$,表示给定多边形的顶点数。其中,$3 \le n \le 5000$。接下来的 $n$ 行,每行包含两个整数 $x_i$ 和 $y_i$,按逆时针顺序给出多边形第 $i$ 个顶点的坐标 $(x_i, y_i)$。$x_i$ 和 $y_i$ 均在 $0$ 到 $100\,000$ 之间(含边界)。
该多边形保证是简单且凸的。换句话说,多边形的任意两条边互不相交,且所有顶点的内角均小于 $180^\circ$。
输出格式
输出两行。第一行应包含将多边形平分为两个相等面积部分的线段的最小长度。第二行应包含此类线段的最大长度。如果输出值的绝对误差或相对误差小于 $10^{-6}$,则视为正确。
样例
样例输入 1
4 0 0 10 0 10 10 0 10
样例输出 1
10 14.142135623730950488
样例输入 2
3 0 0 6 0 3 10
样例输出 2
4.2426406871192851464 10.0
样例输入 3
5 0 0 99999 20000 100000 70000 33344 63344 1 50000
样例输出 3
54475.580091580027976 120182.57592539864775
样例输入 4
6 100 350 101 349 6400 3440 6400 3441 1200 7250 1199 7249
样例输出 4
4559.2050019027964982 6216.7174287968524227