Cod sursa(job #581774)
| Utilizator | Data | 14 aprilie 2011 16:15:31 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.49 kb |
# include <stdio.h>
long long n, K, A, B, lung, sol, i, cit;
long long v[500010], ap[100010];
int main (){
freopen ("divk.in", "r", stdin);
freopen ("divk.out", "w", stdout);
scanf ("%lld%lld%lld%lld", &n, &K, &A, &B);
for (i = 1; i <= n; ++i){
scanf ("%lld", &cit);
v[i] = (v[i - 1] + cit) % K;
}
for (i = 1; i <= n; ++i){
if (i - A >= 0)
++ap[v[i - A]];
if (i - B > 0){
--ap[v[i - B - 1]];
}
sol = sol + ap[v[i]];
}
printf ("%lld\n", sol);
return 0;
}