Pagini recente » Mihnea Andreescu | Cuvinte 2 | Cod sursa (job #1291644) | Cod sursa (job #3233655) | Cod sursa (job #3202764)
#include <fstream>
#include <deque>
using namespace std;
ifstream fin("divk.in");
ofstream fout("divk.out");
int n,k,a,b;
const int kmax = 100000;
long long f[kmax + 5];
deque <long long> q;
deque <long long> p;
long long sol;
int main()
{
fin>>n>>k>>a>>b;
f[0]++;
for(int i=1;i<=n;i++)
{
int x;
fin>>x;
p.push_front(x%k);
while(q.size() > b){
f[q.back()]--;
q.pop_back();
}
while(p.size() >= a){
int bk = p.back();
int el = (q.front()+bk)%k;
sol+=f[el];
f[el]++;
q.push_front(el);
p.pop_back();
}
}
fout<<sol;
}