Cod sursa(job #332282)
| Utilizator | Data | 17 iulie 2009 12:34:21 | |
|---|---|---|---|
| Problema | Divk | Scor | 0 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.5 kb |
#include <stdio.h>
FILE *in, *out;
long int n,k,a,b,i,sol,s[500005],v[500005];
int main()
{
in=fopen("divk.in","r");
out=fopen("divk.out","w");
fscanf(in,"%ld %ld %ld %ld\n",&n,&k,&a,&b);
for(i=0;i<n;i++)
{
fscanf(in,"%ld\n",&s[i]);
s[i]+=s[i-1];
}
for(i=0;i<a;i++)
v[s[i]%k]++;
sol+=v[s[0]%k];
for(i=b;i-a+1<n;i++)
{
v[s[i-b+1]%k]--;
v[s[i-a+2]%k]++;
sol+=v[s[i]%k];
}
fprintf(out,"%ld ",sol);
fclose(out);
return 0;
}