Pagini recente » Cod sursa (job #1630995) | Rating Tudor Tudor (tudort) | Cod sursa (job #2096263) | Cod sursa (job #1623885) | Cod sursa (job #852718)
Cod sursa(job #852718)
//#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
#define NMAX 500005
int n,k,a,b,v[NMAX],d[NMAX];
long long sol;
void read()
{
fin>>n>>k>>a>>b;
for(int i=1;i<=n;i++)
{
fin>>v[i];
v[i]%=k;
}
}
void init()
{
int p,i,j;
for(i=a;i<=b;i++)
{
p=1;
d[1]=v[i];
for(j=i-1;j;j--)
{
d[++p] = d[p-1] + v[j];
if(d[p]>=k) d[p]-=k;
if(i-j+1 >= a)
if(d[p] == 0) sol++;
}
}
}
void solve()
{
int i,j,p;
for(i=b+1;i<=n;i++)
{
p=1;
d[1]=v[i];
for(j=i-1;j>=i-b+1;j--)
{
d[++p] = d[p-1] + v[j];
if(d[p]>=k) d[p]-=k;
if(i-j+1 >= a)
if(d[p] == 0) sol++;
}
}
}
void tipar()
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) fout<<d[i]<<" ";
fout<<endl;
}
}
int main()
{
read();
init();
solve();
fout<<sol;
//tipar();
}