Pagini recente » Cod sursa (job #1826077) | Cod sursa (job #194348) | Cod sursa (job #2608950) | Cod sursa (job #526949) | Cod sursa (job #2767532)
#include <iostream>
#include <fstream>
using namespace std;
int n, k, a, b, v[500005], sp[500005], nrs, fr[100001];
int main()
{
ifstream read("divk.in");
ofstream print("divk.out");
read >> n >> k >> a >> b;
int ok = 0;
for(int i = 1; i <= n; i++)
{
read >> v[i];
if(v[i] != 0) ok = 1;
}
if(ok == 0)
{
print << nrs;
return 0;
}
for(int i = 1; i <= n; i++)
{
sp[i] = (sp[i - 1] + v[i]) % k;
//cout << sp[i] << ' ';
if(sp[i] == 0 and i >= a and i <= b)
{
nrs++;
}
}
// cout<<endl<<"nrs = "<<nrs<<endl;
for(int i = a + 1 ; i <= n; i++)
{
fr[sp[i - a]]++;
if(i > b + 1)
{
fr[sp[i - b - 1]]--;
}
nrs += fr[sp[i]];
}
print << nrs;
return 0;
}