Cod sursa(job #1649838)

Utilizator cella.florescuCella Florescu cella.florescu Data 11 martie 2016 15:21:02
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>
#include <stdlib.h>
#define MAXN 500000
#define MAXK 100000

int v[MAXN+1], frecv[MAXK];

int main()
{
    FILE *fin, *fout;
    int n, k, a, b, i, s;
    long long nr;
    fin=fopen("divk.in", "r");
    fscanf(fin, "%d%d%d%d", &n, &k, &a, &b);
    s=0;
    for(i=1; i<=n; i++){
      fscanf(fin, "%d", &v[i]);
      s=(s+v[i])%k;
      v[i]=s;
    }
    fclose(fin);
    nr=0LL;
    for(i=1; i<=n; i++){
      if(i>=a)
        frecv[v[i-a]]++;
      nr+=1LL*frecv[v[i]];
      if(i>=b)
        frecv[v[i-b]]--;
    }
    fout=fopen("divk.out", "w");
    fprintf(fout, "%lld\n", nr);
    fclose(fout);
    return 0;
}