#P17006. [NWERC 2019] Height Profile

[NWERC 2019] Height Profile

背景

译自 Northwestern Europe Regional Contest (NWERC) 2019

题目描述

自行车经典赛 Amstel Gold Race 每年在附近的荷兰林堡省举行。比赛中有许多短而频繁的爬坡,选手几乎没有时间在两段爬坡之间恢复。例如,该比赛最后 4242 千米中有 88 段陡坡,平均每段大约 11 千米。

每段爬坡的坡度以百分比给出。坡度为 100%100\% 表示每水平前进 11 米,竖直方向也上升 11 米。坡度为 0%0\% 表示完全平坦。一般地,坡度为 p%p\% 表示每水平前进 11 米,竖直方向变化 p/100p/100 米。注意坡度也可以为负。

你知道从比赛起点开始,在每个整数水平千米处道路的高度。为简化起见,我们认为这些点之间的高度是分段线性的。换句话说,在 0011 千米之间、1122 千米之间,依此类推,坡度都视为常数。例如在下图中,水平距离 2.52.5 千米处的高度正好为 2020 米。

:::align{center}

:::

Amstel Gold Race 不能直接与环法或环意中的某些山地赛段相比,但你仍然想进行比较。对于每个一日赛,无论是 Amstel Gold Race 还是环法中的某个赛段,你都想知道:在至少达到某个给定坡度的水平区间中,最长区间的长度是多少。实际上,你想对多个坡度都求出答案。

一个水平区间的坡度由其两个端点决定。例如,在上图中,比赛第 11 千米到第 44 千米之间的坡度为 2%2\%,因为在 22 千米的水平距离内上升了 6060 米。这个水平区间也是坡度至少为 2%2\% 的最长区间。

输入格式

输入包含:

  • 第一行包含两个整数 nnkk (2n1052\le n\le 10^5, 1k501\le k\le 50),表示比赛的水平长度(千米)以及你选择的坡度数量。
  • 第二行包含 n+1n+1 个整数 h0,h1,,hnh_0,h_1,\ldots,h_n (0hi1090\le h_i\le 10^9),其中 hih_i 表示从起点水平距离 ii 千米处的路线高度,单位为米。
  • 接下来 kk 行,每行包含一个实数 gg (100g100-100\le g\le 100,且恰好有一位小数),表示你关心的一个坡度。

输出格式

对于每个给定坡度,按照输入顺序输出一行,表示坡度至少为该值的最长水平区间长度,单位为千米。如果不存在合适区间,输出 impossible

你的答案的绝对误差或相对误差不超过 10610^{-6} 即可。

8 2
0 0 10 30 60 45 75 65 30
2.0
3.1
3.000000000
impossible
2 2
0 30 30
3.0
2.0
1.000000000
1.500000000

提示

【数据规模与约定】

  • 2n1052\le n\le 10^5
  • 1k501\le k\le 50
  • 0hi1090\le h_i\le 10^9
  • 查询坡度 gg 满足 100g100-100\le g\le 100,且恰好有一位小数。
  • 输出长度时,允许绝对误差或相对误差不超过 10610^{-6}