Cod sursa(job #2350823)
Utilizator | Data | 21 februarie 2019 18:52:10 | |
---|---|---|---|
Problema | Divk | Scor | 30 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva de probleme | Marime | 0.54 kb |
#include <bits/stdc++.h>
using namespace std;
const int NMAX = 500004;
int N, K, A, B, sol;
int S[NMAX], R[NMAX];
int main(){
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
scanf("%d%d%d%d", &N, &K, &A, &B);
for(int i = 1, x; i <= N; i++){
scanf("%d", &x);
S[i] = S[i - 1] + x;
if(i - B - 1 >= 0)
R[S[i - B - 1] % K]--;
if(i - A >= 0)
R[S[i - A] % K]++;
sol += R[S[i] % K];
}
printf("%d", sol);
return 0;
}