Cod sursa(job #731446)
| Utilizator | Data | 8 aprilie 2012 02:33:44 | |
|---|---|---|---|
| Problema | Divk | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.59 kb |
#include <iostream>
#include <stdio.h>
#define nmax 500000
using namespace std;
long long N, K, A, B, i;
long long v[nmax], sum[nmax], mih[nmax], rez;
int main()
{
freopen("divk.in","r",stdin);
freopen("divk.out","w",stdout);
scanf("%lld %lld %lld %lld\n",&N, &K, &A, &B);
for (i=1;i<=N;i++)
{
scanf("%lld\n", &v[i]);
}
for (i=1;i<=N;i++)
sum[i] = sum[i-1] + v[i];
for (i=A;i<=N;++i)
{
++mih[sum[i-A]%K];
if (i>B)
--mih[sum[i-B-1]%K];
rez += mih[sum[i]%K];
}
cout<<rez;
}
