Pagini recente » Cod sursa (job #1375448) | Cod sursa (job #2317569) | Cod sursa (job #1755980) | Cod sursa (job #509854) | Cod sursa (job #1450799)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("divk.in");
ofstream fout ("divk.out");
int N, K, a, b;
int *V, *S, *F;
void Read_Data()
{
fin >> N >> K >> a >> b;
V = new int[N + 1]();
S = new int[N + 1]();
F = new int[K + 1]();
for (int i = 1; i <= N; i++) {
fin >> V[i];
}
}
void Write_Data(long long sol)
{
fout << sol << '\n';
fin.close();
fout.close();
delete []V;
delete []S;
delete []F;
}
void Solve()
{
long long sol = 0;
for (int i = 1; i <= N; i++) {
S[i] = (S[i - 1] + V[i]) % K;
}
for (int i = 1; i <= b; i++)
{
if (i - a >= 0) F[S[i - a]] ++;
sol += F[S[i]];
}
for (int i = b + 1; i <= N; i++)
{
F[S[i - a]] ++;
F[S[i - b - 1] ++;
sol += F[S[i]];
}
Write_Data(sol);
}
int main()
{
Read_Data();
Solve();
return 0;
}