Pagini recente » Cod sursa (job #153283) | Cod sursa (job #2926685) | Cod sursa (job #40356) | Cod sursa (job #2117530) | Cod sursa (job #1713431)
#include <cstdio>
#include <algorithm>
#define MAX 4000000
#define INF 200000005
using namespace std;
char f[MAX];
int pos=0,N,K,A,B,v[500005]={},set[100005]={};
long long S=0;
void r(int &nr)
{
nr=0;
while(f[pos]<'0'||f[pos]>'9')
pos++;
while(f[pos]>='0'&&f[pos]<='9')
nr=nr*10+f[pos++]-'0';
}
int main()
{
freopen("test.in","r",stdin);
freopen("test.out","w",stdout);
//fread(f,1,MAX,stdin);
//r(N);r(K);r(A);r(B);
scanf("%d%d%d%d",&N,&K,&A,&B);
for(int i=1;i<=N;i++)
{
//r(v[i]);
scanf("%d",&v[i]);
v[i]+=v[i-1];
v[i]%=K;
}
for(int i=A;i<=B;i++)
set[v[i]]++;
S=set[v[1]];
for(int i=2;i<=N-B+1;i++)
{
set[v[i+A-2]]--;
set[v[i+B-1]]++;
S+=set[v[i]];
}
for(int i=N-B+2;i<=N-A+1;i++)
{
set[v[i+A-2]]--;
S+=set[v[i]];
}
printf("%lld",S);
return 0;
}