Pagini recente » Cod sursa (job #1968271) | Cod sursa (job #1535001) | Cod sursa (job #1476959) | Cod sursa (job #2171668) | Cod sursa (job #1738605)
#include <cstdio>
#include <cctype>
#define LIM 2097152
#define MAXN 500000
#define MAXK 100000
using namespace std;
FILE *fin;
int p=LIM-1;
char s[LIM];
inline void avans(){
if(++p==LIM){
fread(s, 1, LIM, fin);
p=0;
}
}
inline int getnumber(){
int nr=0;
while(isdigit(s[p])==0)
avans();
while(isdigit(s[p])){
nr=nr*10+s[p]-'0';
avans();
}
return nr;
}
int v[MAXN+1], rest[MAXK];
int main()
{
FILE *fout;
long long ans;
int n, k, a, b, i;
fin=fopen("divk.in", "r");
fscanf(fin, "%d%d%d%d", &n, &k, &a, &b);
ans=0LL;
for(i=1; i<=n; i++){
v[i]=(v[i-1]+getnumber())%k;
if(i>=a){
rest[v[i-a]]++;
if(i>b)
rest[v[i-b-1]]--;
}
ans+=1LL*rest[v[i]];
}
fclose(fin);
fout=fopen("divk.out", "w");
fprintf(fout, "%lld\n", ans);
fclose(fout);
return 0;
}