Pagini recente » Cod sursa (job #1444867) | Cod sursa (job #1841056) | Cod sursa (job #3256073) | Cod sursa (job #2920136) | Cod sursa (job #1397667)
#include <cstdio>
#include <queue>
#include <algorithm>
#define Nmax 500010
#define Kmax 100000
using namespace std;
int n , k , a , b , sol , i , A , Mod;
int S[Kmax];
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 += 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("%d\n", sol);
return 0;
}