Pagini recente » Cod sursa (job #1865386) | Cod sursa (job #338690) | Cod sursa (job #2047509) | Cod sursa (job #2808281) | Cod sursa (job #329003)
Cod sursa(job #329003)
#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=0;mid=0;
resturi[0]=1;
for(i=1;i<=n;i++)
{
stop++;
r[i]=(r[i-1]+s[i])%k;
//bagari
while(stop-(mid+1)+1>a)
{
mid++;
resturi[r[mid]]++;
}
//scoateri
if(stop-start+1>b)
{
resturi[r[start]]--;
start++;
}
if(i==b+1) resturi[0]--;
ans+=resturi[r[i]];
}
fprintf(fout,"%lld",ans);
fclose(fin);
fclose(fout);
return 0;
}