Cod sursa(job #1424361)

Utilizator retrogradLucian Bicsi retrograd Data 24 aprilie 2015 09:12:27
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<fstream>
#include<vector>
#include<algorithm>
#include<cstring>
#include<cstdio>

using namespace std;
typedef int64_t var;

#define MAXN 500002

var n, k;
var Count[100000];
var SUM[MAXN];

var Solve(var a) {
    memset(Count, 0, sizeof(Count));
    Count[0] = 1;
    var sol = 0;
    for(var i=a, j=1; i<=n; i++, j++) {
        sol += Count[SUM[i]%k];
        Count[SUM[j]%k]++;
    }
    return sol;
}

int main() {

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

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

    for(var i=1; i<=n; i++) {
        scanf("%lld", &SUM[i]);
        SUM[i] += SUM[i-1];
    }

    printf("%lld", Solve(a) - Solve(b+1));

    return 0;
}