Cod sursa(job #473907)
Utilizator | Data | 1 august 2010 15:08:40 | |
---|---|---|---|
Problema | Divk | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.55 kb |
#include<stdio.h>
FILE*f=fopen("divk.in","r");
FILE*g=fopen("divk.out","w");
int n,k,a,b,s[500100],v[100100] ;
int i , x ;
long long ss ;
int main () {
fscanf ( f , "%d %d %d %d" , &n , &k , &a , &b ) ;
for ( i = 1 ; i <= n ; ++i ) {
fscanf ( f , "%d" , &x ) ;
s[ i ] = ( s[ i - 1 ] + x ) % k ;
if ( i - b - 1 >= 0 )
--v[ s[ i - b - 1 ] ] ;
if ( i - a >= 0 )
++v[ s[ i - a ] ] ;
ss += v[ s[ i ] ] ;
}
fprintf ( g , "%lld" , ss ) ;
fclose(f);
fclose(g);
return 0;
}