Pagini recente » Cod sursa (job #3207073) | Cod sursa (job #820723) | Cod sursa (job #1879803) | Cod sursa (job #2115998) | Cod sursa (job #1397672)
#include <cstdio>
#include <queue>
#include <algorithm>
#define Nmax 500010
#define Kmax 100000
using namespace std;
int n , k , a , b , i , A , Mod;
int S[Kmax];
long long sol;
queue < pair < int , int > > baga , scoate;
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%d %d %d %d", &n, &k, &a, &b);
baga.push(make_pair(a , 0));
scoate.push(make_pair(b , 0));
for (i = 1; i <= n; ++i)
{
while (baga.front().first == i && baga.size())
{
S[baga.front().second]++;
baga.pop();
}
scanf("%d", &A);
Mod = (Mod + A) % k;
sol += 1LL * S[Mod];
while (scoate.front().first == i && scoate.size())
{
S[scoate.front().second]--;
scoate.pop();
}
baga.push(make_pair(i + a , Mod));
scoate.push(make_pair(i + b , Mod));
}
printf("%lld\n", sol);
return 0;
}