Pagini recente » Cod sursa (job #1240822) | Cod sursa (job #1513527) | Cod sursa (job #1727499) | Cod sursa (job #2110186) | Cod sursa (job #329008)
Cod sursa(job #329008)
#include<stdio.h>
#include<string.h>
FILE*fin=fopen("divk.in","r");
FILE*fout=fopen("divk.out","w");
#define nm 500005
int s[nm],resturi[100005],r[nm],n,k,a,b;
int main()
{
int i,j,stop,mid,start;
long long ans=0;
fscanf(fin,"%d%d%d%d",&n,&k,&a,&b);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&s[i]);
//solve
start=-1;stop=-1;
r[0]=0;
for(i=1;i<=n;i++)
{
r[i]=(r[i-1]+s[i])%k;
//bagari
while(i-stop>a)
{
stop++;
resturi[r[stop]]++;
}
//scoateri
if(i-start>b)
if(start>=0)
{
resturi[r[start]]--;
start++;
}
else start++;
ans+=resturi[r[i]];
}
fprintf(fout,"%lld",ans);
fclose(fin);
fclose(fout);
return 0;
}