Cod sursa(job #2017447)

Utilizator DianaPopDiana Pop DianaPop Data 1 septembrie 2017 12:04:13
Problema Divk Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.57 kb
#include <stdio.h>

int x, n, k, a, b, i, j;
int s[500001];
long long t, a1[500001], b1[500001];

int main() {

    freopen( "divk.in" , "r" , stdin );
    freopen( "divk.out" , "w" , stdout );

    scanf( "%d %d %d %d" , &n , &k , &a , &b );

    for( i = 1 ; i <= n ; i++ ){
        scanf( "%d" , &x );
        s[i] = ( s[ i - 1 ] + x ) % k;
        if( i >= a ){
            a1[s[ i - a ]]++;
        }
        if( i > b ){
            b1[s[ i - b - 1 ]]++;
        }
        t += a1[s[i]] - b1[s[i]];
    }

    printf ( "%lld" , t );
    return 0;
}