Pagini recente » Cod sursa (job #1157803) | Cod sursa (job #2295608) | Cod sursa (job #3258475) | Cod sursa (job #1843962) | Cod sursa (job #3222513)
#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;
if(a>b)
swap(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()==0)
{
modulo[s].pb(i);
continue;
}
int st=lower_bound(modulo[s].begin(),modulo[s].end(),i-b)-modulo[s].begin();
int dr=lower_bound(modulo[s].begin(),modulo[s].end(),i-a+1)-modulo[s].begin();
modulo[s].pb(i);
ans+=(dr-st);
}
cout<<ans;
return 0;
}