Cod sursa(job #1135270)

Utilizator ELHoriaHoria Cretescu ELHoria Data 7 martie 2014 16:38:41
Problema Divk Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

long long solve(int& n,int& k,int& a,int& b,vector<int>& v) {
    long long ret = 0;
    vector<int> sum(n + 1,0);
    vector<int> freq(k,0);
    for (int i = 1; i <= n; i++) {
        sum[i] = (sum[i - 1] + v[i - 1]) % k;
        if (i - a >= 0) {
            freq[sum[i - a ]]++;
        }

        if (i - b - 1 >= 0) {
            freq[sum[i - b - 1]]--;
        }

        ret += freq[sum[i]];
    }

    return ret;
}


int main()
{
    ifstream cin("divk.in");
    ofstream cout("divk.out");
    int N, K, A, B;
    cin >> N >> K >> A >> B;
    vector<int> v(N);
    
    for (int i = 0; i < N; i++) {
        cin >> v[i];
    }

    
    cout <<  solve(N, K, A, B, v) << "\n";

    return 0;
}