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