Cod sursa(job #1507088)
Utilizator | Data | 21 octombrie 2015 12:37:05 | |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.53 kb |
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
int main() {
ifstream fin("divk.in");
ofstream fout("divk.out");
int n, k, a, b, x;
fin >> n >> k >> a >> b;
int num[500005], r[500005];
long long sol = 0;
r[0] = 1;
for (int i = 1; i <= n; i++) {
fin >> x;
num[i] = (num[i - 1] + x) % k;
}
for (int i = a; i <= n; i++) {
sol += r[num[i]];
r[num[i - a + 1]]++;
if (i >= b) r[num[i - b]]--;
}
fout << sol << endl;
return 0;
}