Cod sursa(job #503170)
| Utilizator | Data | 21 noiembrie 2010 21:12:42 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <stdio.h>
using namespace std;
int n,k,i,j,f,ii,m[500001],v[500001],p[500001],a,b;
long long nr,s[500001];
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
ii=1;
scanf("%d %d %d %d",&n,&k,&a,&b);
s[0]=0;
for (i=1;i<=n;i++)
{
scanf("%d",&m[i]);
s[i]=s[i-1]+m[i];
v[i]=s[i] % k;
}
p[0]=1;
for (i=a;i<=n;i++)
{
nr+=p[v[i]];
p[v[i-a+1]]++;
if (i>=b)
p[v[i-b]]--;
}
printf("%lld",nr);
return 0;
}
