Cod sursa(job #1548246)

Utilizator cristina_borzaCristina Borza cristina_borza Data 10 decembrie 2015 17:59:17
Problema Divk Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <cstring>
#include <vector>

#define NMAX 500005

using namespace std;

int nra[NMAX] , nrb[NMAX] , v[NMAX];
int n , k , a , b , r , ra ,rb , sol;

int solve(int nr);

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

    scanf("%d %d %d %d" , &n , &k , &a , &b);

    long long sum = 0 , x;

    for(int i = 1 ; i <= n ; ++i) {
        scanf("%d" , &x);
        sum += x;
        v[i] = sum % k;
    }

    v[0] = 0;

    for(int i = 0 ; i <= n ; ++i) {
        r = v[i];

        if(i >= a) {
            ra = v[i - a];
            ++nra[ra];
        }

        sol += nra[r] - nrb[r];

        if(i >= b) {
            rb = v[i - b];
            ++nrb[rb];
        }
    }

    printf("%d" , sol);

    return 0;
}