Cod sursa(job #1775728)

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

int N,K,A,B;
int a[500005];
int rmod[500005];
int rest[100005];

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;

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

    fout << Sol;
}