Cod sursa(job #2345199)
| Utilizator | Data | 15 februarie 2019 22:56:56 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <bits/stdc++.h>
#define llg long long
#define MAXK 100005
#define MAXN 500005
llg N, K, A, B;
llg Rest[MAXK];
llg SP[MAXN];
std::ifstream In ("divk.in");
std::ofstream Out("divk.out");
void Citire() {
In >> N >> K >> A >> B;
}
void Rezolvare() {
llg Sum = 0, Ans = 0;
for (llg i=1, X; i<=N; ++i) {
In >> X;
SP[i] = (SP[i-1] + X) % K;
if (i>=A)
Rest[SP[i-A]]++;
if (i>=B+1)
Rest[SP[i-B-1]]--;
Ans += Rest[SP[i]];
} Out << Ans << '\n';
}
int main()
{
Citire();
Rezolvare();
return 0;
}
