Cod sursa(job #935678)
| Utilizator | Data | 4 aprilie 2013 13:36:05 | |
|---|---|---|---|
| Problema | Divk | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.56 kb |
#include<stdio.h>
int n , k , a , b , sp[500001] , sum , ap[500001];
int main()
{
freopen("divk.in" , "r" , stdin);
freopen("divk.out" , "w" , stdout);
scanf("%d %d %d %d" , &n , &k , &a , &b);
for(int i=1 ; i<=n ; ++i)
scanf("%d" , &sp[i]);
for(int i=1 ; i<=n ; ++i)
sp[i]=(sp[i - 1] + sp[i]) % k;
for(int i=1 ; i<=n ; ++i)
{
if(i - a >= 0)
++ap[sp[i - a]];
if(i - b > 0)
--ap[sp[i - b - 1]];
sum+=ap[sp[i]];
}
printf("%d\n" , sum);
return 0;
}
