1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// Example program
#include <iostream>
#include <algorithm>

#define MAXN 300003

long long M = 1000000007;

int n;
long long a[MAXN];
long long ile_teraz;
long long dp[MAXN];

int main()
{
  scanf("%d", &n);
  for (int i = 1; i <= n; i++) {
    scanf("%lld", &a[i]);
  }
  dp[0] = 1;
  for (int i = 1; i <= n; i++) {
    ile_teraz = a[i];
    for (int j = (i - 1); j >= 0; j--) {
        if ((ile_teraz % M) % 2 == 0) {
            dp[i] += dp[j];
            dp[i] %= M;
        }
        ile_teraz += a[j];
    }
  }
  
  printf("%lld", dp[n]);
}