Pagini recente » Cod sursa (job #2295470) | Cod sursa (job #784817) | Cod sursa (job #1049898) | Cod sursa (job #2219942) | Cod sursa (job #497973)
Cod sursa(job #497973)
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
vector<int> v[100000];
long long int solve(const int& L,const int& k)
{
long long int count=0;
for(int i=0;i<k;i++)
{
int p1=0,p2=1;
for(;;)
{
if(p2>=(int) v[i].size())
break;
while(v[i][p2]-v[i][p1]>L && p1<p2)
++p1;
count+=p2-p1;
++p2;
}
}
for(int i=0;i<(int) v[0].size();i++)
{
if(v[0][i]<L)
++count;
else
break;
}
return count;
}
int main()
{
ifstream in("divk.in");
ofstream out("divk.out");
int n,k,A,B,nr;
in>>n>>k>>A>>B;
in>>nr;
int s=nr%k;
v[s].push_back(0);
for(int i=1;i<n;i++)
{
in>>nr;
s+=nr;
s%=k;
v[s].push_back(i);
}
out<<solve(B,k)-solve(A-1,k)<<endl;
in.close();
out.close();
}