Cod sursa(job #671296)
Utilizator | Data | 31 ianuarie 2012 09:35:30 | |
---|---|---|---|
Problema | Divk | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.72 kb |
#include<stdio.h>
const int C=9001,N=100001;
int sum[N],f[N];
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
int n,i,x,j,A,B,K,p;
scanf("%d%d%d%d",&n,&K,&A,&B);
long long nr=0;
for(i=1;i<=n;i++)
{
scanf("%d",&x);
sum[i]=(sum[i-1]+x)%K;
p=0;
for(j=i-1;j>=i-A+1;j--)
if(sum[j]==sum[i])
{
p++;
}
for(j=i-B-1;j>=0;j--)
if(sum[j]==sum[i])
{
p++;
}
nr-=p;
f[sum[i]]++;
}
f[0]++;
for(i=0;i<=n;i++)
{
nr+=f[i]*(f[i]-1)/2;
//nr%=C;
}
printf("%d",nr);
}