만드는 중입니다

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

꽃 구매하기

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

요약
0 <= x_i <= f_i이고 합이 S인 정수 수열 x_i의 개수를 구한다. N은 20 이하, S는 1e14 이하다.
난이도

보통10점 중 7점

유형
조합론, 동적 계획법, 수학, 비트 연산
정답자
아직 제출이 없습니다

문제

상근이는 여자친구에게 줄 꽃을 정확히 SS송이 사려고 한다.

동네에는 꽃집이 NN개 있고, ii번째 꽃집은 꽃을 최대 fif_i송이까지 판다. 한 꽃집이 파는 꽃은 모두 색이 같고, 색이 같은 꽃끼리는 구분할 수 없다. 서로 다른 꽃집이 같은 색 꽃을 파는 경우는 없다.

그래서 구매 방법은 각 꽃집에서 몇 송이를 사는지로 정해진다. 즉 0≤xi≤fi0 \le x_i \le f_i이고 x1+x2+⋯+xN=Sx_1 + x_2 + \cdots + x_N = S인 정수 수열 (x1,x2,…,xN)(x_1, x_2, \ldots, x_N)의 개수를 세면 된다.

꽃을 정확히 SS송이 사는 방법의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 NN과 SS가 주어진다. (1≤N≤201 \le N \le 20, 0≤S≤10140 \le S \le 10^{14})

둘째 줄에 f1,f2,…,fNf_1, f_2, \ldots, f_N이 공백으로 구분되어 주어진다. (0≤fi≤10120 \le f_i \le 10^{12})

출력

꽃을 정확히 SS송이 사는 방법의 수를 109+710^9 + 7로 나눈 나머지를 첫째 줄에 출력한다.

예제3

  1. 예제 1

    입력
    2 3
    1 3
    
    예상 출력
    2
    
  2. 예제 2

    입력
    2 4
    2 2
    
    예상 출력
    1
    
  3. 예제 3

    입력
    3 5
    1 3 2
    
    예상 출력
    3