아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

소들의 시위 그룹 나누기

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

요약
수열을 연속한 여러 구간으로 나눌 때 각 구간의 합이 모두 0 이상이 되도록 하는 분할의 수를 1,000,000,009로 나눈 나머지를 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 누적 합, 이분 탐색, 정렬
정답자
아직 제출이 없습니다

문제

농부 John의 소 NN마리(1≤N≤100,0001 \le N \le 100{,}000)가 한 줄로 서 있고, 왼쪽부터 11번부터 NN번까지 번호가 매겨져 있습니다. 소들이 또 이상한 시위를 벌이고 있어서, 각 소 ii는 정수 AiA_i(−10,000≤Ai≤10,000-10{,}000 \le A_i \le 10{,}000)가 적힌 팻말을 들고 있습니다.

John은 소들을 적절히 묶어 두면 소란이 가라앉는다는 것을 알고 있습니다. 그래서 모든 소를 하나 이상의 연속한 그룹으로 나누려고 합니다. 이때 모든 소는 정확히 하나의 그룹에만 속해야 하고, 각 그룹에 속한 소들이 든 정수의 합은 00 이상이어야 합니다.

John이 소들을 이렇게 나눌 수 있는 방법의 수를 1,000,000,0091{,}000{,}000{,}009로 나눈 나머지를 구하세요.

두 방법은 그룹의 경계가 서로 다르면 서로 다른 방법으로 셉니다.

입력

  • 첫째 줄: 정수 NN이 주어집니다.
  • 둘째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에 정수 AiA_i가 하나씩 주어집니다.

출력

  • 첫째 줄: 소들을 나누는 방법의 수를 1,000,000,0091{,}000{,}000{,}009로 나눈 나머지를 출력합니다.

예제3

  1. 예제 1

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

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

    입력
    1
    -5
    
    예상 출력
    0