Pagini recente » Cod sursa (job #2948007) | Cod sursa (job #1977221) | Cod sursa (job #684321) | Cod sursa (job #1638363) | Cod sursa (job #1887590)
#include <stdio.h>
#define dim 10000
using namespace std;
int v[500010],vc[100010],poz;
char buff[dim];
void citeste (int &numar)
{
numar = 0;
while(buff[poz]<'0'||buff[poz]>'9')
{
poz++;
if(poz==dim){
fread(buff,1,dim,stdin);
poz=0;
}
}
while(buff[poz]>='0'&&buff[poz]<='9')
{
numar=numar*10+buff[poz]-'0';
poz++;
if(poz==dim){
fread(buff,1,dim,stdin);
poz=0;
}
}
}
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
int n,k,a,b,i,x;
long long suma=0;
citeste(n);
citeste(k);
citeste(a);
citeste(b);
for(i=1; i<=n; i++)
{
citeste(x);
v[i]=v[i-1]+x;
v[i]%=k;
}
vc[0]=1;
for(i=1; i<=n; i++)
{
if(i>=a)
{
suma=suma+vc[v[i]];
vc[v[i-a+1]]++;
if(i>=b)
vc[v[i-b]]--;
}
}
printf("%lld",suma);
return 0;
}