Pagini recente » Cod sursa (job #1864764) | Cod sursa (job #1161421) | Cod sursa (job #2080874) | Cod sursa (job #1697428) | Cod sursa (job #743956)
Cod sursa(job #743956)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
#define nmax 500010
#define kmax 100010
int sp[nmax];//sume partiale % k
int sume[kmax];//sume[sp[i]]=nr de indici (de sume partiale) pt care am obtinut restul sp[i] la impartirea cu k, pana acum
int N;
int main(){
int K,A,B;
ifstream fin("divk.in");
ofstream fout("divk.out");
fin>>N>>K>>A>>B;
int i;
int aux;
for(i=1;i<=N;i++){
fin>>aux;
sp[i]=(sp[i-1]+aux)%K;
}
long long suma=0;
for(i=A;i<=N;i++){
sume[sp[i-A]]++;//garanteaza lungimea >=a
if(i>B)sume[sp[i-B-1]]--;//garanteaza lungimea<=b; daca e >b scade 1
suma+=sume[sp[i]];
}
fout<<suma<<endl;
return 0;
}