Cod sursa(job #2462713)

Utilizator MatteoalexandruMatteo Verzotti Matteoalexandru Data 27 septembrie 2019 18:59:05
Problema Divk Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>
#include <fstream>

using namespace std;

const int N = 5 * 1e5;

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

ifstream in ("divk.in");
ofstream out ("divk.out");

int main()
{
    ios_base::sync_with_stdio(false);
    //freopen("divk.in", "r", stdin);
    //freopen("divk.out", "w", stdout);
    int n, k, a, b, i, x;
    long long rez = 0;
    in >> n >> k >> a >> b;
    for(i = 1; i <= n; i++){
        in >> 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]];
    }
    out << rez;
    return 0;
}