塔子哥住的小区前面有一条公路,在公路上有一排 n 个居民楼,每个居民楼都有一个高度,第 i 个居民楼的高度为 ai ,相邻居民楼都相隔 100 米,塔子哥最近回家的时候经常没有路灯,然后经常迷路,现在塔子哥想在想要是公路左右两边各设计一座灯塔,这样灯塔就可以把所有地方都照亮,塔子哥回家路上就不会迷路了,现在塔子哥想知道灯塔至少得有多高。
为了简化问题,公路可看做一条直线, 居民楼和灯塔可看做立在公路旁边的一条竖线,左边的灯塔距离最左边的居民楼和右边灯塔距离最右边的居民楼也都是 100 米。居民楼会挡住灯光,如果从最左边的居民楼到最右边的居民楼中间的点都要至少要被一座灯塔照亮, 那么两座灯塔高度之和最少是多少。
枚举左边的灯塔的高度,二分得到右边的灯塔最低是多少,并更新最小值。
二分中的check用相似三角形算出每两个居民楼之间的两个灯塔没有照射到的部分是否超过了100m.具体的见代码注释.