Cod sursa(job #1141838)
| Utilizator | Data | 13 martie 2014 10:47:10 | |
|---|---|---|---|
| Problema | Divk | Scor | 90 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.75 kb |
#include<fstream>
#define N 500100
#define K 100100
using namespace std;
ifstream f("divk.in");
ofstream g("divk.out");
int nr[K],v[N],i,n,mo,k,a,b,j;
long long S[N],sol;
int main ()
{
f>>n>>k>>a>>b;
for(i=1;i<=n;++i)
f>>v[i];
j=0;
nr[0]=1;
for(i=1;i<=n;++i)
{
S[i]=S[i-1]+v[i];
mo=S[i]%k;
if(i-j>b)
{
nr[S[j]%k]--;
j++;
}
sol+=nr[mo];
nr[S[i]%k]++;
}
for(i=0;i<k;++i)
nr[i]=0;
nr[0]=1;
a--;
j=0;
for(i=1;i<=n;++i)
{
mo=S[i]%k;
if(i-j>a)
{
nr[S[j]%k]--;
j++;
}
sol-=nr[mo];
nr[S[i]%k]++;
}
g<<sol;
}
