Pagini recente » Cod sursa (job #2334922) | Cod sursa (job #512385) | Cod sursa (job #305011) | Cod sursa (job #1074997) | Cod sursa (job #1571607)
#include <bits/stdc++.h>
using namespace std;
int n, k, A, B;
int a[500005], v[100001];
vector <int> h[100001];
void Citire()
{
int i;
ifstream fin("divk.in");
fin >> n >> k >> A >> B;
for(i = 1; i <= n; i++)
fin >> a[i];
fin.close();
}
long long secv(int L)
{
long long cnt;
int r, i, j, len;
cnt = 0;
for(r = 0; r < k; r++)
{
len = h[r].size();
for(i = 0; i < len; i++)
v[i] = h[r][i];
i = 0;
for(j = 0; j < len; j++)
{
while(v[j] - v[i] > L) i++;
cnt += (j - i + 1);
}
}
return cnt;
}
void Rezolva()
{
int i, s;
long long Sol;
h[0].push_back(0);
s = 0;
for(i = 1; i <= n; i++)
{
s = (s + a[i]) % k;
h[s].push_back(i);
}
Sol = secv(B) - secv(A - 1);
ofstream fout("divk.out");
fout << Sol << "\n";
fout.close();
}
int main()
{
Citire();
Rezolva();
return 0;
}