Pagini recente » Cod sursa (job #2531193) | Cod sursa (job #1112338) | Cod sursa (job #1406807) | Cod sursa (job #2818202) | Cod sursa (job #581594)
Cod sursa(job #581594)
#include<fstream>
#include<vector>
#define NMAX 100010
using namespace std;
vector<int> a[NMAX];
int n, aa, b, k;
ifstream f("divk.in");
ofstream g("divk.out");
void Citeste()
{
int x, s=0, i;
f>>n>>k>>aa>>b;
a[0].push_back(0);
for (i=1; i<=n; ++i)
{
f>>x;
s=(s+x)%k;
a[s].push_back(i);
}
}
void Solve()
{
int i, j, pa, pb, m;
long long REZ=0;
for (i=0; i<k; ++i)
{
m=a[i].size(); pa=0; pb=0;
for (j=0; j<m; ++j)
{
while (a[i][pa+1]-a[i][j]<aa && pa+1<m) ++pa;
while (a[i][pb+1]-a[i][j]<=b && pb+1<m) ++pb;
if (a[i][pa]-a[i][j]>aa) --pa;
if (a[i][pb]-a[i][j]>b) --pb;
if (pa<pb) REZ=REZ+pb-pa;
if (pa==pb && a[i][j]-a[i][pa]>=aa && a[i][j]-a[i][pa]<=b) ++REZ;
}
}
g<<REZ<<"\n";
}
int main()
{
Citeste();
Solve();
f.close();
g.close();
return 0;
}