Cod sursa(job #1775710)

Utilizator tudi98Cozma Tudor tudi98 Data 10 octombrie 2016 17:21:38
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;

int N,K,A,B;
int a[500001];
int rmod[500001];
int rest[100001];

inline void Mod(int& a) {
    if (a >= K) a-= K;
}

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

    fin >> N >> K >> A >> B;
    for (int i = 1; i <= N; i++)
        fin >> a[i];

    rmod[N] = a[N] % K;
    for (int j = N-1; j >= 1; j--)
        rmod[j] = (a[j] + rmod[j+1]) % K;

    int Sol = 0;
    int L = N,R = N;
    rest[rmod[N]]++;
    if (rmod[N-A+1] == 0) Sol++;
    rest[0]++;
    for (int i = N - A; i >= 1; i--) {
        if (i < N - B + 1) {
            rest[rmod[R]]--;
            R--;
        }
        else if (rmod[i] == 0)
            Sol++;
        Sol += rest[rmod[i]];
        L--;
        rest[rmod[L]]++;
    }

    fout << Sol;
}