Pagini recente » Diferente pentru utilizator/tabara intre reviziile 42 si 73 | Diferente pentru problema/valuare intre reviziile 53 si 54 | Cod sursa (job #1169250) | Istoria paginii runda/simple_coding/clasament | Cod sursa (job #1515278)
#include <iostream>
#include <fstream>
#define nmax 500005
using namespace std;
FILE* fin=fopen("divk.in","r");
ofstream fout("divk.out");
long r[nmax];
int main()
{long n,k,a,b,i,j,x,fina;
long long nr=0;
fscanf(fin,"%ld%ld%ld%ld",&n,&k,&a,&b);
r[0]=0;
for(i=1;i<=n;i++)
{
fscanf(fin,"%ld",&x);
r[i]=(x%k+ r[i-1])%k;
if(a<=1 && r[i]==0)nr++;
}
for(i=1;i<=n-a+1;i++)
{fina=min(i+b-1,n);
for(j=i+a;j<=fina;j++)
if(r[j]==r[i])++nr;
}
fout<<nr;
}