Cod sursa(job #1539949)

Utilizator Master011Dragos Martac Master011 Data 1 decembrie 2015 20:31:46
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.57 kb
#include<cstdio>
using namespace std;

const int nMax = 500000;
int r[nMax + 1], nrAp[nMax + 1];

int main (){
    FILE *in = fopen("divk.in","r");
    FILE *out = fopen("divk.out","w");

    int n, k, a, b;
    fscanf(in,"%d%d%d%d", &n, &k, &a, &b);

    nrAp[0] = 1;
    long long sol = 0;
    for(int i = 1 ; i <= n ; ++i){
        fscanf(in,"%d", r + i);
        r[i] = (r[i] + r[i - 1]) % k;

        sol += nrAp[r[i]];
        if(i >= a) nrAp[r[i - a + 1]]++;
        if(i >= b) nrAp[r[i - b]]--;
    }

    fprintf(out,"%lld\n", sol);
    return 0;
}