Pagini recente » Cod sursa (job #2049132) | Cod sursa (job #1379407) | Cod sursa (job #1941590) | Cod sursa (job #2518174) | Cod sursa (job #131193)
Cod sursa(job #131193)
#include <stdio.h>
#include <vector>
using namespace std;
long long n,k,x,y,b[500010],c[100010],d[100010];
long long sol;
vector <int> a[100010];
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%d%d%d%d",&n,&k,&x,&y);
int i;
for (i=0; i<k; ++i)
{
c[i]=0;
d[i]=-1;
}
a[0].push_back(0);
for (i=1; i<=n; ++i)
{
scanf("%d",&b[i]);
b[i]=(b[i]+b[i-1])%k;
a[b[i]].push_back(i);
while (a[b[i]][d[b[i]]+1]<=i-x) d[b[i]]++;
while (i-a[b[i]][c[b[i]]]>y) c[b[i]]++;
if (c[b[i]]<=d[b[i]])
{
sol+=(d[b[i]]-c[b[i]]+1);
}
}
printf("%d\n",sol);
return 0;
}