Pagini recente » Cod sursa (job #2520887) | Cod sursa (job #1339895) | Cod sursa (job #74734) | Cod sursa (job #653716) | Cod sursa (job #2156118)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, k, a, b, dp[500010];
vector <int> v[100005];
ll get(int l){
ll ans = 0;
for (int i=0; i<k; i++){
if (v[i].size() > 1){
int st = 0, dr = 0;
while (st < v[i].size()){
dr = st;
while (dr + 1 < v[i].size() && v[i][dr + 1] - v[i][st] <= l) dr++;
ans += dr - st;
st++;
}
}
}
return ans;
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
ifstream cin ("divk.in");
ofstream cout ("divk.out");
cin >> n >> k >> a >> b;
v[0].push_back(0);
for (int i=1; i<=n; i++) cin >> dp[i], dp[i] = (dp[i] + dp[i-1])%k, v[dp[i]].push_back(i);
cout << get(b) - get(a - 1);
return 0;
}