Cod sursa(job #1141842)
| Utilizator | Data | 13 martie 2014 10:49:52 | |
|---|---|---|---|
| Problema | Divk | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.73 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,x,n,mo[N],k,a,b,j;
long long sol;
int main ()
{
f>>n>>k>>a>>b;
for(i=1;i<=n;++i)
{
f>>x;
mo[i]=(mo[i-1]+x)%k;
}
j=0;
nr[0]=1;
for(i=1;i<=n;++i)
{
if(i-j>b)
{
nr[mo[j]]--;
j++;
}
sol+=nr[mo[i]];
nr[mo[i]]++;
}
for(i=0;i<k;++i)
nr[i]=0;
nr[0]=1;
a--;
j=0;
for(i=1;i<=n;++i)
{
if(i-j>a)
{
nr[mo[j]]--;
j++;
}
sol-=nr[mo[i]];
nr[mo[i]]++;
}
g<<sol;
}
