목차

꿈틀꿈틀 호석 애벌레 - 효율성

ps
링크acmicpc.net/…
출처BOJ
문제 번호20181
문제명꿈틀꿈틀 호석 애벌레 - 효율성
레벨골드 2
분류

DP, 투포인터

시간복잡도O(n)
인풋사이즈n<=100,000
사용한 언어Python
제출기록41896KB / 160ms
최고기록188ms
해결날짜2022/02/27

풀이

코드

"""Solution code for "BOJ 20181. 꿈틀꿈틀 호석 애벌레 - 효율성".

- Problem link: https://www.acmicpc.net/problem/20181
- Solution link: http://www.teferi.net/ps/problems/boj/20181

Tags: [DP]
"""


def main():
    N, K = [int(x) for x in input().split()]
    satis = [int(x) for x in input().split()]

    dp = [0] * (N + 1)
    beg, end = 0, 1
    satis_sum = satis[0]
    while beg < N:
        if satis_sum >= K or end == N:
            dp[end] = max(dp[end], dp[beg] + satis_sum - K)
            satis_sum -= satis[beg]
            beg += 1
        else:
            satis_sum += satis[end]
            end += 1
            dp[end] = dp[end - 1]

    print(dp[-1])


if __name__ == '__main__':
    main()