Pagini recente » Cod sursa (job #942484) | Cod sursa (job #1669025) | Cod sursa (job #2815552) | Cod sursa (job #1007433) | Cod sursa (job #1980968)
#include <fstream>
#include <vector>
using namespace std;
int n,k,a,b,x,v[500001],st,dr,i,j,sol;
vector <int> L[100001];
ifstream fin ("divk.in");
ofstream fout ("divk.out");
int main (){
fin>>n>>k>>a>>b;
for (i=1;i<=n;i++){
fin>>x;
v[i] = v[i-1] + x;
v[i] %= k;
L[v[i]].push_back (i);
}
for (i=0;i<k;i++){
st = 0;
dr = 0;
for (j=1;j<L[i].size();j++){
while (L[i][j] - L[i][st] + 1 > b)
st++;
while (L[i][j] - L[i][dr] + 1 >= a)
dr++;
dr--;
if (L[i][j] - L[i][st] + 1 <= b && L[i][j] - L[i][dr] + 1 >= a)
sol += dr-st+1;
}
}
fout<<sol;
return 0;
}