Cod sursa(job #65559)
Utilizator | Data | 10 iunie 2007 19:52:41 | |
---|---|---|---|
Problema | Divk | Scor | 90 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include<stdio.h>
long int n,k,a,b,i,cit,v[100001],s[500001],sol,l,r;
int main()
{
FILE *f,*g;
f=fopen("divk.in","r");
g=fopen("divk.out","w");
fscanf(f,"%ld%ld%ld%ld",&n,&k,&a,&b);
for(i=1;i<=n;i++)
{ fscanf(f,"%ld",&cit);
s[i]=(s[i-1]+cit)%k;
}
l=a;r=b;
for(i=l;i<=r;i++)
if(i<=n)v[s[i]]++;
for(i=1;i<=n;i++)
{ if(l>n)break;
sol+=v[s[i-1]];
if(r<n)v[s[r+1]]++;
v[s[l]]--;
l++;r++;
}
fprintf(g,"%ld\n",sol);
fcloseall();
return 0;
}