Pagini recente » Cod sursa (job #1946789) | Cod sursa (job #1996845) | Cod sursa (job #257883) | Cod sursa (job #1631449) | Cod sursa (job #1731137)
#include <iostream>
#include <fstream>
using namespace std;
int 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;if(!s[i] && i>=a && i<=b)ct++;}
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(i-j>=a)ct++;
int t=j;
j=f1[j];
// f1[t]=0;
}
if(i-j>=a && i-j<=b)ct++;
}
fout<<ct;
return 0;
}