연강은 힘들어(Hard)

시간 제한1초메모리 제한1024 MB

요약
필수 수업을 모두 포함하면서 선택한 교시들의 최장 연속 구간 길이가 정확히 k가 되도록 수업을 고르는 경우의 수를 1e9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 조합론, 누적 합
정답자
아직 제출이 없습니다

문제

이 문제는 연강은 힘들어(Easy)의 상위 문제이고, 연강은 힘들어(Easy)에 이 문제의 정답 코드를 제출하여 맞힐 수 있다.

도훈이는 저번 학기 수강신청에 실패했다.

하루 일과는 1,2,…,n1,2,\ldots ,n교시로 구성되고, nn개의 서로 다른 수업이 각각 하나의 서로 다른 교시를 차지한다. 이번 수강신청에서는 수강할 수업을 잘 골라서 가장 많이 연속된 수업들이 정확히 kk교시를 이루도록 시간표를 짜고 싶다. 이때, kk교시의 연속된 수업들이 여러 번 등장하더라도 상관없다.

예제 1에서 가능한 경우들 중 일부.

두 경우 모두 가장 많이 연속된 수업들이 정확히 22교시를 이룬다.

하지만 반드시 수강해야 하는 필수 수업이 존재한다. 필수 수업들을 고려하여, 도훈이의 수강신청을 도와주자!

입력

첫 번째 줄에 두 정수 n,kn,k가 공백으로 구분되어 주어진다.

두 번째 줄에 각 교시의 필수 수업 여부를 나타내는 nn개의 정수 a_1,a_2,…,a_na\_1,a\_2,\ldots ,a\_n이 공백으로 구분되어 주어진다. a_ia\_i는 ii교시의 수업이 필수 수업이면 11, 아니면 00을 가리킨다.

출력

하루 1,2,…,n1,2,\ldots ,n교시 중 가장 많이 연속된 수업들이 정확히 kk교시를 이루는 시간표의 가짓수를 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 1≤k≤n≤1061\le k\le n\le 10^6.
  • a_i∈0,1a\_i\in\\{0,1\\}.

예제2

  1. 예제 1

    입력
    5 2
    0 0 0 0 0
    
    예상 출력
    11
    
  2. 예제 2

    입력
    5 2
    0 1 0 0 1
    
    예상 출력
    4