Cod sursa(job #1765031)
Utilizator | Stoica Alexandru caesar2001 | Data | 26 septembrie 2016 10:55:19 |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <stdio.h>
#include <stdlib.h>
FILE *in,*out;
int nra[100001],nrb[100001],sum[500001];
int main()
{
in = fopen("divk.in","r");
out = fopen("divk.out","w");
int n,k,a,b,i,x;
long long rez = 0;
fscanf(in,"%d %d %d %d\n",&n,&k,&a,&b);
for(i = 1;i <= n;i ++)
{
fscanf(in,"%d\n",&x);
sum[i] = (sum[i-1] + x) % k;
if(i >= a)
{
nra[sum[i-a]] ++;
}
if(i > b){
nrb[sum[i-b-1]] ++;
}
rez = rez + nra[sum[i]] - nrb[sum[i]];
}
fprintf(out,"%lld",rez);
return 0;
}