Pagini recente » Cod sursa (job #2138963) | Cod sursa (job #424054) | Cod sursa (job #83371) | Cod sursa (job #1294691) | Cod sursa (job #1731148)
#include <iostream>
#include <fstream>
using namespace std;
long long n,k,a,b,s[500001],i,x,f[500001],f1[500001],ct;
int main()
{
ifstream fin ("divk.in");
ofstream fout ("divk.out");
fin>>n>>k>>a>>b;
for(i=1;i<=n;i++)
{
fin>>x;
s[i]=s[i-1]+x;
s[i]%=k;
if(!f[s[i]]){f1[i]=i,f[s[i]]=i;}
else
{
f1[i]=f[s[i]];
f[s[i]]=i;
}
}
for(i=n;i>=1;i--)
{
int j;
j=i;
while(j!=f1[j] && i-j<=b)
{
if(!s[j] && j>=a && j<=b)ct++;
if(i-j>=a)ct++;
int t=j;
j=f1[j];
// f1[t]=0;
}
if(!s[j] && j==f1[j] && i-j>=a && i-j<=b)ct++;
if(i-j>=a && i-j<=b)ct++;
}
fout<<ct;
return 0;
}