Cod sursa(job #1512735)

Utilizator mariakKapros Maria mariak Data 28 octombrie 2015 16:10:28
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <cstdio>
#include <algorithm>
#include <vector>
#define Dim 500002

using namespace std;
int n, k, a, b, x, s[Dim];
unsigned long long Sol = 0;
int main()
{
    freopen("divk.in", "r", stdin);
    freopen("divk.out", "w", stdout);
    scanf("%d %d %d %d", &n, &k, &a, &b);
    vector <int> v(k + 1, 0);
    for(int i = 1; i <= n; ++ i)
    {
        scanf("%d", &x);
        s[i] = (s[i - 1] + x) % k;
        if(i - a >= 0)
            ++ v[s[i - a]];
        if(i - b - 1 >= 0)
            -- v[s[i - b - 1]];
        if(i >= a)
            Sol += v[s[i]];
    }
    printf("%lld\n", Sol);
    return 0;
}