Cod sursa(job #645200)

Utilizator Smaug-Andrei C. Smaug- Data 8 decembrie 2011 20:27:31
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include <cstdio>

#define MAXN 500010
#define MAXK 100010

int main(){

  freopen("divk.in", "r", stdin);
  freopen("divk.out", "w", stdout);

  int N, K, A, B, i, aux;
  static int R[MAXN], cntR[MAXK];
  long long res;

  scanf("%d%d%d%d", &N, &K, &A, &B);

  res=0;
  for(i=1; i<=N; i++){
    
    scanf("%d", &aux);

    R[i]=(R[i-1]+aux)%K;

    if(i>=A){
      cntR[R[i-A]]++;
      if(i-B-1 >= 0)
	cntR[R[i-B-1]]--;
      res+=cntR[R[i]];
    }

  }

  printf("%lld\n", res);

  return 0;

}