Cod sursa(job #1896661)
Utilizator | Data | 28 februarie 2017 20:21:56 | |
---|---|---|---|
Problema | Divk | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.56 kb |
#include <cstdio>
using namespace std;
int s[500005], f[100005];
int main() {
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int n, k, a, b, x, sol = 0;
scanf("%d%d%d%d", &n, &k, &a, &b);
for(int i = 1; i <= n; ++ i) {
scanf("%d", &x);
s[i] = s[i - 1] + x;
}
++ f[0];
for(int i = a; i <= n; ++ i) {
sol += f[s[i] % k];
++ f[s[i - a + 1] % k];
if(i - b >= 0) {
-- f[s[i - b] % k];
}
}
printf("%d", sol);
return 0;
}