Cod sursa(job #1397265)

Utilizator rzvrzvNicolescu Razvan rzvrzv Data 23 martie 2015 13:08:27
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.61 kb
#include<cstdio>

using namespace std;

int i,s[500001],k,a,b,n,x,rest[100002];

long long ans;

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);
        s[i]=s[i-1]+x;
        s[i]%=k;
        if(i>=a&&i<=b)
        {
            rest[s[i]]++;
        }
    }
    for(i=0;i+a<=n;i++)
    {
        x=s[i];
        ans+=rest[x];
        rest[s[i+a]]--;
        if(i+b<n)
        {
            ++rest[s[i+b+1]];
        }
    }
    printf("%lld\n",ans);
    return 0;
}