Cod sursa(job #246465)
Utilizator | Data | 20 ianuarie 2009 21:45:41 | |
---|---|---|---|
Problema | Divk | Scor | 40 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.45 kb |
#include <cstdio>
#define lm 100010
long v[500010],d[100010],n,k,a,b,i,x,st,c;
long long s;
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%ld %ld %ld %ld",&n,&k,&a,&b);
for (i=1; i<=n; i++)
{
scanf("%ld",&x);
s+=x;
v[i]=s%k;
}
d[0]=1;
for (i=a; i<=n; i++)
{
c+=d[v[i]];
d[v[i-a+1]]++;
if (st+b<i)
{
d[v[st]]--;
st++;
}
}
printf("%ld\n",c);
}