hiho week 233 register

Ended

Participants:96

Verdict:Accepted
Score:100 / 100
Submitted:2018-12-19 18:51:01

Lang:G++

Edit
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
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int n;
int lowbit(int x)
{
    return x & (-x);
}
#define ll long long
ll mod = 1e9 + 7;
const int M = 1e7;
ll sum[2 * M + 5];
ll pre[N];
ll a[N];
//
int main()
{
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
        scanf("%lld", &a[i]);
    for (int i = 1; i <= n; i++)
        pre[i] = (pre[i - 1] + a[i]) % mod;
    ll dp = 1;
    ll dpans = dp;
    sum[M] = 1;
    for (int i = 1; i <= n; i++)
    {
        dpans = (dp - sum[M + pre[i]] + mod) % mod;
        dp = (dp + dpans) % mod;
        (sum[M + pre[i]] += dpans) %= mod;
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX