Cod sursa(job #2415272)
| Utilizator | Data | 25 aprilie 2019 18:13:32 | |
|---|---|---|---|
| Problema | Divk | Scor | 90 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <iostream>
#include<cstdio>
using namespace std;
const int K=100005;
const int N=500005;
int frv[K];
int sp[N];
int main()
{
FILE*fin,*fout;
fin=fopen("divk.in","r");
fout=fopen("divk.out","w");
int n,a,b,k;
fscanf(fin,"%d%d%d%d",&n,&k,&a,&b);
for(int i=1;i<=n;i++){
int x;
fscanf(fin,"%d",&x);
sp[i]=x+sp[i-1];
sp[i]%=k;
}
long long sol=0;
for(int i=a;i<=n;i++){
frv[sp[i-a]]++;
if(i>b)
frv[sp[i-b-1]]--;
sol+=1LL*frv[sp[i]];
}
fprintf(fout,"%lld",sol);
return 0;
}
