Pagini recente » Cod sursa (job #800846) | Cod sursa (job #610359) | Cod sursa (job #149496) | Cod sursa (job #278225) | Cod sursa (job #2524602)
#include <bits/stdc++.h>
using namespace std;
ifstream ci("divk.in");
ofstream cou("divk.out");
int a,b,k,v[500005],n;
vector<int>rs[100005];
int m[100005];
void citire(){
ci>>n>>k>>a>>b;
for(int i=1;i<=n;i++){
ci>>v[i];
}
}
void resturi(){
int i,r;
for(i=1;i<=n;i++){
v[i]=(v[i]+v[i-1])%k;
}
for(i=1;i<=n;i++){
r=v[i]%k;
rs[r].push_back(i);
m[r]++;
}
for(i=0;i<=k-1;i++){
rs[i].push_back(0);
}
}
void rez(){
int i,j,s=0,j1,j2,j3=0;
for(i=0;i<=k-1;i++){
//s=0;
j3=0;
for( j=0;j<m[i];j++){
j1=0;
j2=0;
if(m[i]>=2){
j1=j;
if(rs[i][j+1]-rs[i][j]+1<=b&& a<=1+rs[i][j+1]-rs[i][j]){
while((rs[i][j+1]-rs[i][j]+1<=b&& a<=1+rs[i][j+1]-rs[i][j])){
j++;
}
j2=j;
s+=(j2-j1+1)*(j2-j1)/2-(j3-j1+1)*(j3-j1)/2;
// cout<<j1<<" "<<j2<<" "<<j3<<" "<<s<<"\n";
j3=j;
j=j1;
}
}
}
//cout<<i<<" "<<s<<"\n";
}
cou<<s;
}
int main()
{
citire();
resturi();
rez();
return 0;
}