Cod sursa(job #1588311)

Utilizator catu_bogdan_99Catu Bogdan catu_bogdan_99 Data 2 februarie 2016 22:47:15
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <cstdio>
using namespace std;

long long v[500005];
int ap[500005];

int main()
{

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

    int n, i, j, t, d, a, b, k;
    long long s  = 0;

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

    for( i = 1; i <= n; ++i ){
        scanf("%d",&t);
        v[i] = ( v[i-1] + (long long)t ) % k;
    }

    for( i = 1; i <= n; ++i ){
        if( i >= a ){
            s += ap[v[i]];
            if( i - a >= b ) ap[v[i-a]]--;
        }
        ap[v[i]]++;
    }

    printf("%d",s);

    return 0;
}