Cod sursa(job #995447)

Utilizator gbi250Gabriela Moldovan gbi250 Data 8 septembrie 2013 21:31:27
Problema Divk Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>

using namespace std;

int n, k, a, b, x, i, j, in, remainder_f[10000];
long long sum[500001], nr;

int main()
{
    freopen("divk.in", "r", stdin);
    freopen("divk.out", "w", stdout);
    scanf("%d %d %d %d", &n, &k, &a, &b);
    for(i=1; i<=n; ++i)
    {
        scanf("%d", &x);
        sum[i] = ( sum[i-1] + x%k ) % k;
        if( !sum[i] && i>=a && i<=b)
            ++nr;
    }

    for(i=a; i<=n; ++i)
    {
        ++remainder_f[ sum[i-a] ];
        if(i >= b+1)
            --remainder_f[ sum[i-b-1] ];
        nr+=remainder_f[ sum[i] ];
    }

    printf("%lld\n", nr);
    return 0;
}