Cod sursa(job #1769520)

Utilizator mihai.alphamihai craciun mihai.alpha Data 2 octombrie 2016 17:32:38
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>

const int MAX = 500000;

long long rez;

int nra[MAX], nrb[MAX], sum[MAX+1];
int main()  {
    FILE *fin = fopen("divk.in", "r"), *fout = fopen("divk.out", "w");
    int n, k, a, b, i, cit;
    fscanf(fin, "%d%d%d%d", &n, &k, &a, &b);
    nra[0] = 1;nrb[0] = 1;
    int k1 = 0;
    for(i = 1;i <= n;i++)  {
        fscanf(fin, "%d", &cit);
        sum[i]=(sum[i - 1]+cit)%k;
        if(i > a)
            nra[sum[i - a]]++;
        if(i >= b+1)
            nrb[sum[i - b - 1]]--;
//        else if (i == b + 2)
//            nr[0]--;
        rez += (nra[sum[i]] - nrb[sum[i]]);
        //printf("la pasul %d apar in plus %d si ajungem la %lld\n", i, nr[sum[i]], rez);
    }
    fprintf(fout, "%lld", rez);
    fclose(fin);
    fclose(fout);
    return 0;
}