Cod sursa(job #1721216)
| Utilizator | Data | 24 iunie 2016 20:55:45 | |
|---|---|---|---|
| Problema | Divk | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <bits/stdc++.h>
using namespace std;
typedef long long i64;
i64 f[500005],
s[500005];
int main(void) {
freopen("divk.in", "r", stdin);
freopen("divk.out", "w", stdout);
int n, k, a, b, t;
i64 ant;
scanf("%d%d%d%d",&n,&k,&a,&b);
ant = 0;
for(int i=1; i<=n; ++i){
scanf("%d",&t);
s[i]=(s[i-1]+t)%k;
if(i>b)
++f[s[i-b-1]];
if(i>=a)
++f[s[i-a]];
ant+=(1LL*f[s[i]]);
}
printf("%lld\n",ant);
fclose(stdin);
fclose(stdout);
return 0;
}
