Cod sursa(job #1126078)

Utilizator Theorytheo .c Theory Data 26 februarie 2014 21:11:30
Problema Divk Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>
#include <vector>

using namespace std;

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

const int NMAX = 500009;
const int KMAX = 100009;

int N; int K; int A; int B; int V[NMAX]; int T[NMAX];

vector <int> S[KMAX];

int main() {

    fin >> N >> K >> A >>B;
    int sum = 0;
    S[0].push_back(0);
    for(int i = 1; i <= N; ++i) {
        fin >> V[i];
        sum = (sum + V[i]) % K;
        T[i] = sum;
        S[sum].push_back(i);
    }

    int sol = 0;

    for(int i = 1; i <= N; ++i) {
        for(unsigned j = 0 ;j < S[T[i]].size(); ++j) {
            if(S[T[i]][j] > i - A) break;

            if(!(A <= i - S[T[i]][j] && i - S[T[i]][j] <= B)) continue;

            sol++;
        }
    }
    fout << sol;

    return 0;
}