Cod sursa(job #2350000)

Utilizator LittleWhoFeraru Mihail LittleWho Data 20 februarie 2019 22:14:01
Problema Divk Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>
	
 
	
using namespace std;
	
 
	
const int maxn = 500001;
	
 
	
long long sums[maxn];
	
int remainders[maxn];
	
long long sol;
	
int n, k, a, b;
	
 
	
int main() {
	
  freopen("divk.in", "r", stdin);
	
  freopen("divk.out", "w", stdout);
	
 
	
  //cin >> n >> k >> a >> b;
	  scanf("%d%d%d%d", &n, &k, &a, &b);
 
	
  for (int i = 1, x; i <= n; i++) {
	
    scanf("%d", &x);
	
    sums[i] += sums[i - 1] + x;
    if (i - b - 1 >= 0) remainders[sums[i - b - 1] % k]--;
	
    if (i - a >= 0) remainders[sums[i - a] % k]++;
	
    sol += remainders[sums[i] % k];
	

  }
	
  //cout << sol << "\n";
	printf("%lld\n", sol);
 
	
  return 0;
	
}