Cod sursa(job #841619)
| Utilizator | Data | 24 decembrie 2012 15:26:53 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.63 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("divk.in","r",stdin));
assert(freopen("divk.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;
}
