Cod sursa(job #2462693)

Utilizator MatteoalexandruMatteo Verzotti Matteoalexandru Data 27 septembrie 2019 18:54:27
Problema Divk Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>

using namespace std;

const int N = 5 * 1e5;

long long nr[5 + N], sum[5 + N];

int main()
{
    freopen("divk.in", "r", stdin);
    freopen("divk.out", "w", stdout);
    int n, k, a, b, i, x;
    long long rez = 0;
    scanf("%d%d%d%d", &n, &k, &a, &b);
    for(i = 1; i <= n; i++){
        scanf("%d", &x);
        sum[i] = sum[i - 1] + x;
        sum[i] %= k;
    }
    for(i = a; i <= b; i++){
        nr[sum[i-a]]++;
        rez += nr[sum[i]];
    }
    for(i = b + 1; i <= n; i++){
        nr[sum[i-a]]++;
        nr[sum[i-b-1]]--;
        rez += nr[sum[i]];
    }
    printf("%lld\n", rez);
    return 0;
}