만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

또 다른 Mex 문제

시간 제한4초메모리 제한512 MB

요약
배열을 길이가 k 이하인 연속 구간으로 나누어, 각 구간의 원소 합에 그 구간의 mex를 곱한 값의 총합을 최대로 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 배열, 세그먼트 트리
정답자
아직 제출이 없습니다

문제

길이가 n인 배열 a와 정수 k가 주어진다. 배열을 길이가 k 이하인 연속된 부분 배열들로 나누어 전체 이익이 최대가 되도록 하라. 부분 배열 하나의 이익은 그 부분 배열의 원소 합에 그 부분 배열의 mex 값을 곱한 것이다. 전체 이익은 모든 부분 배열의 이익을 더한 값이다.

음이 아닌 정수들의 집합에 대한 mex 값은 그 집합에 속하지 않는 가장 작은 음이 아닌 정수이다. 예를 들어 mex(0, 1, 3) = 2이다.

입력

첫 줄에 배열의 길이 n (2 ≤ n ≤ 200 000)과 부분 배열 길이의 상한 k (1 ≤ k ≤ n)이 주어진다.

둘째 줄에는 배열의 원소 n개가 주어진다. i번째 정수는 a_i이며 0 ≤ a_i ≤ n이다.

출력

길이가 k 이하인 부분 배열들로 나누었을 때 얻을 수 있는 이익의 최댓값을 음이 아닌 정수 하나로 출력한다.

예제3

  1. 예제 1

    입력
    5 3
    3 4 0 0 3
    
    예상 출력
    10
    
  2. 예제 2

    입력
    8 4
    0 1 2 0 3 1 4 1
    
    예상 출력
    26
    
  3. 예제 3

    입력
    10 5
    0 2 0 1 2 1 0 2 2 1
    
    예상 출력
    33