atcoder#AGC030B. [AGC030B] Tree Burning

[AGC030B] Tree Burning

得分 : 800800

问题陈述

高桥湖的周长为 LL。在湖的周围有高桥的住所。
湖的周长上的每一点坐标介于 00LL 之间(包括 00 但不包括 LL),这是从高桥住所测量的逆时针方向的距离。

湖边有 NN 棵树;第 ii 棵树的坐标是 XiX_i。坐标 00 是高桥住所的位置,那里没有树。

从他的住所出发,高桥将重复以下操作:

  • 如果所有的树都被烧毁,则终止该过程。
  • 指定一个方向:顺时针或逆时针。
  • 沿指定方向在湖边走,直到第一次到达尚未烧毁的树的坐标。
  • 当到达树的坐标时,烧毁那棵树,停留在该位置,然后返回第一步。

找出高桥在整个过程中走的最长可能的总距离。

部分得分

在此问题中,可以获得部分得分:

  • 满足 N2000N \leq 2000 的输入将获得 300300 分。

约束条件

  • 2L1092 \leq L \leq 10^9
  • 1N2×1051 \leq N \leq 2\times 10^5
  • 1X1<...<XNL11 \leq X_1 < ... < X_N \leq L-1
  • 所有输入值均为整数。

输入

输入从标准输入以以下格式给出:

LL NN

X1X_1

::

XNX_N

输出

打印高桥在整个过程中走的最长可能的总距离。

10 3
2
7
9
15

如果过程按如下方式进行,高桥走的距离为 1515

  • 逆时针走 22 的距离,烧毁坐标为 22 的树,并停留在那里。
  • 逆时针走 55 的距离,烧毁坐标为 77 的树,并停留在那里。
  • 顺时针走 88 的距离,烧毁坐标为 99 的树,并停留在那里。
10 6
1
2
3
6
7
9
27
314159265 7
21662711
77271666
89022761
156626166
160332356
166902656
298992265
1204124749