Pagini recente » Cod sursa (job #280603) | Cod sursa (job #218308) | Cod sursa (job #1410587) | Cod sursa (job #2671967) | Cod sursa (job #498609)
Cod sursa(job #498609)
#include <iostream>
#include <fstream>
#include <cstdio>
using namespace std;
int N,K,A,B;
int V[500000];
int C[100000];
int main()
{
FILE* fisIn = fopen("divk.in", "r");
ofstream fisOut("divk.out");
fscanf(fisIn, "%d %d %d %d", &N, &K, &A, &B);
for (int i=0; i<N; i++) fscanf(fisIn, "%d", V+i);
V[0] = V[0] % K;
for (int i=1; i<N; i++) V[i] = (V[i]+V[i-1])%K;
memset(C, 0, sizeof(int)*K);
C[0] = 1;
int secv = 0;
int pozA=-1;
int pozB=-1;
int pozR = A-1;
while (pozR<N)
{
secv += C[V[pozR]];
pozR++;
pozA++;
C[pozA]++;
if ((pozR-pozB)>B)
{
C[(pozB >= 0) ? V[pozB] : 0]--;
pozB++;
}
}
fisOut << secv;
}