Cod sursa(job #467482)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 29 iunie 2010 00:45:54
Problema Divk Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <vector>

using namespace std;

#define file_in "divk.in"
#define file_out "divk.out"

#define nmax 501000

int n,k,a,b;
int s[nmax];
int v[nmax];
long long sol;


void citire()
{
    freopen(file_in,"r",stdin);
    //freopen(file_out,"w",stdout);

    scanf("%d %d %d %d", &n, &k,&a, &b);
    for (int i=1;i<=n;++i)
         scanf("%d", &v[i]);

}

void solve()
{
    int i;
    sol=0;

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

     printf("%lld\n",sol);

}

int main()
{
    citire();
    solve();

    fclose(stdin);
    fclose(stdout);

    return 0;
}