Pagini recente » Cod sursa (job #962941) | Cod sursa (job #769061) | Cod sursa (job #2336356) | Cod sursa (job #247441) | Cod sursa (job #497945)
Cod sursa(job #497945)
#include<iostream>
#include<vector>
#include<fstream>
using namespace std;
vector<int> v[100000];
int solve(const int& L,const int& k)
{
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;
}
}
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;
v[s%k].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();
}