CF1398G Running Competition

题目描述

一场跑步比赛即将举行。比赛场地可以用坐标平面上的若干线段表示: - 两条水平线段:一条连接点 $(0, 0)$ 和 $(x, 0)$,另一条连接点 $(0, y)$ 和 $(x, y)$; - $n+1$ 条竖直线段,编号从 $0$ 到 $n$。第 $i$ 条线段连接点 $(a_i, 0)$ 和 $(a_i, y)$,其中 $0 = a_0 < a_1 < a_2 < \dots < a_{n-1} < a_n = x$。 例如,下图展示了 $x = 10$,$y = 5$,$n = 3$,$a = [0, 3, 5, 10]$ 时的场地: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1398G/81bd381693fb1325b3353cdccb69047f4e9ca225.png) 一圈(lap)是沿着这些线段走的路线,起点和终点为同一点,且路线不会自交(唯一重合的点是起点和终点)。一圈的长度是沿路线走过的总距离。例如,图中红色路线是一圈,其长度为 $24$。 比赛将分为 $q$ 个阶段。第 $i$ 个阶段的长度为 $l_i$,组织者希望为每个阶段选择一圈,使得该圈的长度是 $l_i$ 的约数。组织者不希望选择太短的圈,因此对于每个阶段,他们想要找到满足条件的最大可能圈长。 请帮助组织者计算每个阶段最大可能的圈长!换句话说,对于每个 $l_i$,找到最大的整数 $L$,使得 $l_i \bmod L = 0$,且存在长度恰好为 $L$ 的一圈。 如果无法选择这样的圈,则输出 $-1$。

输入格式

第一行包含三个整数 $n$、$x$ 和 $y$($1 \le n, x, y \le 2 \times 10^5$,$n \le x$)。 第二行包含 $n+1$ 个整数 $a_0, a_1, \ldots, a_n$($0 = a_0 < a_1 < a_2 < \dots < a_{n-1} < a_n = x$)。 第三行包含一个整数 $q$($1 \le q \le 2 \times 10^5$),表示阶段数。 第四行包含 $q$ 个偶数 $l_1, l_2, \ldots, l_q$($4 \le l_i \le 10^6$),表示每个阶段的长度。

输出格式

输出 $q$ 个数字。第 $i$ 个数字表示第 $i$ 个阶段满足条件的最大圈长,如果无法选择则输出 $-1$。

说明/提示

由 ChatGPT 4.1 翻译