Cod sursa(job #1649921)

Utilizator Tiberiu02Tiberiu Musat Tiberiu02 Data 11 martie 2016 15:46:56
Problema Divk Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.65 kb
# include <stdio.h>
# include <stdlib.h>

# define MAXN 500000
# define MAXK 100000

int v[MAXN + 1];
int rest[MAXK];

int main()
{
    FILE *fin = fopen( "divk.in", "r" ), *fout = fopen( "divk.out", "w" );

    int n, k, a, b, i;
    long long s;

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

    s = 0;
    for ( i = 1; i <= n; i ++ ) {
        fscanf( fin, "%d", &v[i] );
        v[i] = ( v[i] + v[i - 1]) % k;

        if ( i - b - 1 >= 0 )
            rest[v[i - b - 1]] --;
        if ( i - a >= 0 )
            rest[v[i - a]] ++;

        s += rest[v[i]];
    }

    fprintf( fout, "%lld", s );

    fclose( fin );
    fclose( fout );

    return 0;
}