Pagini recente » Cod sursa (job #77563) | Cod sursa (job #2986578) | Cod sursa (job #22251) | Cod sursa (job #3205197) | Cod sursa (job #3222512)
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream cin("divk.in");
ofstream cout("divk.out");
#define pb push_back
vector < vector < int > > modulo;
int main()
{
int n,k,a,b,s=0,x,ans=0;
cin>>n>>k>>a>>b;
modulo.resize(k);
modulo[0].pb(0);
for(int i=1;i<=n;i++)
{
cin>>x;
s=(s+x)%k;
if(!modulo[s].size()){
modulo[s].pb(i);
continue;
}
int st=lower_bound(modulo[s].begin(),modulo[s].end(),i-b+1)-modulo[s].begin();
int dr=upper_bound(modulo[s].begin(),modulo[s].end(),i-a+1)-modulo[s].begin();
modulo[s].pb(i);
ans+=(dr-st);
}
cout<<ans;
return 0;
}