Pagini recente » Cod sursa (job #2437623) | Cod sursa (job #2637073) | Cod sursa (job #2517037) | Cod sursa (job #2442911) | Cod sursa (job #1334608)
#include <cstdio>
#define filein "divk.in"
#define fileout "divk.out"
using namespace std;
int N,K;
int A,B;
int v[500001];
int r[100000];
long long Answer;
void PrintData();
void PrintR();
int main()
{
FILE *in;
in=fopen(filein,"r");
fscanf(in,"%d%d%d%d",&N,&K,&A,&B);
register int i;
for (i=1; i<A; i++)
{
fscanf(in,"%d",v+i);
v[i]+=v[i-1];
v[i]%=K;
}
int st,fn;
st=0;
fn=0;
r[0]=1;
for (; i<=N; i++)
{
fscanf(in,"%d",v+i);
v[i]+=v[i-1];
v[i]%=K;
Answer+=r[v[i]];
if (fn-st+1>B-A)
{
r[v[st++]]--;
r[v[++fn]]++;
}
else
r[v[++fn]]++;
}
fclose(in);
PrintData();
return 0;
}
void PrintData()
{
FILE *out;
out=fopen(fileout,"w");
fprintf(out,"%lld",Answer);
fclose(out);
}