PythonでJOI難易度6を埋める #7

C - つらら

indexを付けて,最初のつららの高さでsortする.sortされたつららの配列から高い順に折れる時間を決定していく.

n, l = map(int, input().split())
turara = [[int(input()), i] for i in range(n)]

turara_s = sorted(turara, reverse = True)

time = [0] * n
for i in range(n):
    index = turara_s[i][1]

    if index == 0: #一番左のつらら
        if turara_s[i][0] > turara[1][0]:
            time[0] = l - turara_s[i][0]
        else:
            time[0] = time[1] + l - turara_s[i][0]

    elif index == n - 1: #一番右のつらら
        if turara_s[i][0] > turara[-2][0]:
            time[-1] = l - turara_s[i][0]
        else:
            time[-1] = time[-2] + l - turara_s[i][0]

    else:
        if turara_s[i][0] > turara[index + 1][0] and turara_s[i][0] > turara[index - 1][0]: #左右より長い
            time[index] = l - turara_s[i][0]
        elif turara_s[i][0] > turara[index + 1][0] and turara_s[i][0] < turara[index - 1][0]: #左 > つらら > 右
            time[index] = time[index - 1] + l - turara_s[i][0]
        elif turara_s[i][0] < turara[index + 1][0] and turara_s[i][0] > turara[index - 1][0]: #左 < つらら < 右
            time[index] = time[index + 1] + l - turara_s[i][0]
        elif turara_s[i][0] < turara[index + 1][0] and turara_s[i][0] < turara[index - 1][0]: #左 > つらら < 右
            time[index] = max(time[index - 1], time[index + 1]) + l - turara_s[i][0]

print(max(time))