Cod sursa(job #1649917)
Utilizator | Data | 11 martie 2016 15:45:21 | |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.48 kb |
#include <cstdio>
int s[5000001], nr[100000];
int main()
{
freopen( "divk.in", "r", stdin );
freopen( "divk.out", "w", stdout );
int n, k, a, b, i, r, x;
long long secv=0;
scanf( "%d%d%d%d", &n, &k, &a, &b );
for( i=1;i<=n;i++ )
{
scanf( "%d", &x );
r=(s[i-1]+x)%k;
s[i]=r;
if( i-a>=0 )
nr[s[i-a]]++;
if( i-b-1>=0 )
nr[s[i-b-1]]--;
secv+=nr[r];
}
printf( "%lld", secv );
return 0;
}