Pagini recente » Cod sursa (job #1633522) | Cod sursa (job #2535996) | Cod sursa (job #1901442) | Cod sursa (job #369889) | Cod sursa (job #1978477)
#include <fstream>
#include <queue>
#define MAXN 500001
#define MAXK 100001
using namespace std;
ifstream fi("divk.in");
ofstream fo("divk.out");
queue <int> Q;
int v[MAXN],C[MAXK],n,k,A,B,i;
long long rez;
int main()
{
fi>>n>>k>>A>>B;
v[0]=0;
for (i=1; i<=n; i++)
{
fi>>v[i];
v[i]=(v[i-1]+v[i])%k;
if (i>=A)
{
Q.push(v[i-A]);
C[v[i-A]]++;
}
if (Q.size()>B-A+1)
{
C[Q.front()]--;
Q.pop();
}
rez+=C[v[i]];
}
fo<<rez;
fi.close();
fo.close();
return 0;
}
/*
#include <fstream>
#include <cstdlib>
#include <ctime>
using namespace std;
ofstream fo("divk.in");
int main()
{
srand(time(NULL));
fo<<"500000 7 1 500000\n";
for (int i=1; i<=500000; i++)
fo<<rand()%10000000<<"\n";
}
*/