PythonでJOI難易度5を埋める #18

1 - 電飾 (illumination) 考えたこと
交互列ごとに区切ると, i番目の交互列に機械を使うと左右の交互列( i = 0, nだと片方)と必ず接続される.このことから,入力を交互列ごとに区切って,交互列のどれに機械を使えばよいかを判断すればよい.2つ以下の交互列にしか区切れない場合は必ず nになる.

n = int(input())
lights = list(map(int, input().split()))

check = []
now = lights[0]
cnt = 1

for i in range(1, n):
    if lights[i] == now:
        check.append(cnt)
        cnt = 1
    else:
        cnt += 1
        now = lights[i]

check.append(cnt)

ans = check[0]
if len(check) >= 3:
    for i in range(1, len(check) - 1):
        ans = max(check[i-1] + check[i] + check[i + 1], ans)

else:
    ans = n
print(ans)