Pagini recente » Cod sursa (job #3289975) | Cod sursa (job #1256766) | Cod sursa (job #759215) | Cod sursa (job #1156560) | Cod sursa (job #2865842)
#include <bits/stdc++.h>
using namespace std;
class divk{
private:
FILE *fin;
char *buff;
int sp;
char read_ch(){
++sp;
if(sp==4096){
sp=0;
fread(buff,1,4096,fin);
}
return buff[sp];
}
public:
divk(const char *name){
fin=fopen(name,"r");
buff=new char[4096]();
sp=4095;
}
divk& operator >>(int &n){
char c;
while(!isdigit(c=read_ch()));
n=c-'0';
while(isdigit(c=read_ch()))
n=n*10+c-'0';
return *this;
}
}fin("divk.in");
const int mx = 5e5 + 5;
int n,k,a,b;
int sum[mx];
int fr[mx];
int main()
{
freopen("divk.out","w",stdout);
cout.tie(nullptr);
fin >> n >> k >> a >> b;
for(int i=1;i<=n;++i){
int x;
fin >> x;
sum[i]=(sum[i-1]+x)%k;
}
long long int ans = 0;
for(int i=a;i<=n;++i){
if(i-b-1>=0)fr[sum[i-b-1]]--;
fr[sum[i-a]]++;
ans += fr[sum[i]];
}
cout << ans;
}