Cod sursa(job #841618)

Utilizator Athena99Anghel Anca Athena99 Data 24 decembrie 2012 15:26:40
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <cassert>
#include <cstdio>

int v[500005],rem[100005];

int main()
{
    int n=0,k=0,a=0,b=0,i=0;
    long long sol=0;

    assert(freopen("div.in","r",stdin));
    assert(freopen("div.out","w",stdout));

    assert(scanf("%d%d%d%d",&n,&k,&a,&b));
    for (i=1; i<=n; ++i)
    {
        assert(scanf("%d",&v[i]));
        v[i]=(v[i]+v[i-1])%k;
    }

    for (i=a; i<b; ++i)
    {
        ++rem[v[i-a]];
        sol+=rem[v[i]];
    }

    for (i=b; i<=n; ++i)
    {
        ++rem[v[i-a]];
        sol+=rem[v[i]];
        --rem[v[i-b]];
    }

    assert(printf("%lld",sol));

    return 0;
}