Pagini recente » Cod sursa (job #124424) | Cod sursa (job #264280) | Cod sursa (job #1620306) | Cod sursa (job #2483725) | Cod sursa (job #2415277)
#include <iostream>
#include<cstdio>
using namespace std;
const int K=100005;
const int N=500005;
int frv[K];
int sp[N];
FILE*fin,*fout;
const int SIZE = 1024;
char buf[SIZE];
int ptr=SIZE;
char adv(){
if(ptr==SIZE){
fread(buf,sizeof(char),SIZE,fin);
ptr=0;
}
return buf[ptr++];
}
int read(){
int x=0;
int sign=1;
char c;
while(c!='-' && !(c>='0' && c<='9'))
c=adv();
while(c=='-'){
sign*=-1;
c=adv();
}
while(c>='0' && c<='9'){
x=x*10+c-'0';
c=adv();
}
return x;
}
int main()
{
fin=fopen("divk.in","r");
fout=fopen("divk.out","w");
int n,a,b,k;
fscanf(fin,"%d%d%d%d ",&n,&k,&a,&b);
for(int i=1;i<=n;i++){
int x;
x=read();
sp[i]=x+sp[i-1];
sp[i]%=k;
}
long long sol=0;
for(int i=a;i<=n;i++){
frv[sp[i-a]]++;
if(i>b)
frv[sp[i-b-1]]--;
sol+=1LL*frv[sp[i]];
}
fprintf(fout,"%lld",sol);
return 0;
}