Недавно Вы купили новую умную лампу с программируемыми функциями. Первым делом Вы выставили расписание на ней. Каждый день лампа будет включать питание в момент $$$0$$$ и выключать питание в момент $$$M$$$. Более того, данная лампа позволяет Вам записать в нее программу, следуя которой, она будет менять свое состояние (состояниями считается «свет включен» и «свет выключен»). К сожалению, в лампу уже предустановлена некоторая программа.
Лампа принимает только хорошие программы. Хорошая программа может быть представлена непустым массивом $$$a$$$, где $$$0 < a_1 < a_2 < \dots < a_{|a|} < M$$$. Все $$$a_i$$$ должны быть целыми числами. Конечно, предустановленная программа является хорошей.
Лампа выполняет заданную программу $$$a$$$ следующим образом: в момент $$$0$$$ она включает и питание, и свет. Далее, в момент $$$a_i$$$ лампа переключает свое состояние на противоположное (если свет был включен, то он выключается, и наоборот). Свет переключается моментально, т. е., например, если переключить свет в момент времени $$$1$$$ и дальше ничего не делать, то итоговое время горения лампы будет равно $$$1$$$. Наконец, в момент $$$M$$$ лампа отключает питание независимо от того, был ли свет включен.
Так как Вы не из тех, кто читает инструкции, да и написана она на неизвестном языке, Вы (методом проб и ошибок) находите единственный способ изменить предустановленную программу. Вы можете вставить не более одного числа в программу $$$a$$$ таким образом, что она все еще останется хорошей. Вставка может быть осуществлена в любое место, как между любой парой соседних элементов в $$$a$$$, так и в начало или конец массива $$$a$$$.
Найдите такой способ изменить программу, что суммарное время горения лампы будет максимально. Возможно, что иногда лучше оставить программу нетронутой. (Если у лампы включен свет с момента $$$x$$$ по момент $$$y$$$, тогда лампа будет гореть время, равное $$$y - x$$$. Отрезки включенного света суммируются).
Первая строка содержит два числа $$$n$$$ и $$$M$$$ ($$$1 \le n \le 10^5$$$, $$$2 \le M \le 10^9$$$) — длина предустановленной программы $$$a$$$ и момент отключения питания лампы.
Вторая строка содержит $$$n$$$ чисел через пробел $$$a_1, a_2, \dots, a_n$$$ ($$$0 < a_1 < a_2 < \dots < a_n < M$$$) — программа $$$a$$$.
Выведите единственное число — максимально возможное время горения, если Вы можете сделать не более одного изменения, описанного выше.
3 10
4 6 7
8
2 12
1 10
9
2 7
3 4
6
В первом примере один из возможных оптимальных ответов — вставить значение $$$x = 3$$$ перед $$$a_1$$$, тогда программа будет выглядеть как $$$[3, 4, 6, 7]$$$, и суммарное время горения лампы будет равно $$$(3 - 0) + (6 - 4) + (10 - 7) = 8$$$. С другой стороны, можно, например, вставить $$$x = 5$$$ в соответствующее место.
Во втором примере есть единственное оптимальное решение: вставить $$$x = 2$$$ между $$$a_1$$$ и $$$a_2$$$. Программа примет вид $$$[1, 2, 10]$$$ и ответ будет равен $$$(1 - 0) + (10 - 2) = 9$$$.
В третьем примере оптимальным решением является совсем не трогать программу, ответ будет равен $$$(3 - 0) + (7 - 4) = 6$$$.
Название |
---|