Pagini recente » Cod sursa (job #2136662) | Cod sursa (job #476296) | Cod sursa (job #3236730) | Cod sursa (job #327298) | Cod sursa (job #1450773)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("divk.in");
ofstream fout ("divk.out");
int N, K, A, B, sol, V[500010];
vector < int > X[100010];
int main()
{
fin >> N >> K >> A >> B;
X[0].push_back(0);
for (int i = 1; i <= N; i++) {
fin >> V[i];
V[i] = (V[i] + V[i - 1]) % K;
X[V[i]].push_back(i);
}
for (int i = 0; i < K; i++)
{
int p = 0, u = 1;
for (; u < X[i].size(); u++)
{
while (X[i][u] - X[i][p] > B) p++;
if (X[i][u] - X[i][p] >= A && X[i][u] - X[i][p] <= B)
{
sol += (u - p);
}
}
}
fout << sol << '\n';
fout.close();
return 0;
}