Pagini recente » Cod sursa (job #3237498) | Cod sursa (job #1479791) | Cod sursa (job #697009) | Cod sursa (job #1823707) | Cod sursa (job #498053)
Cod sursa(job #498053)
# include <fstream.h>
ifstream f ("divk.in");
ofstream g ("divk.out");
int i,j,n,k,la,lb,s[500100],x,y,v[500100];
struct nod
{
int info;
nod *urm;
}*a[100010],*p,*q;
void adauga (int x,int i)
{
p=new nod;
p->info=x;
p->urm=a[i];
a[i]=p;
}
int calc (nod *p,int lim)
{
int nr=0;
q=p;
while (p)
{
q=p->urm;
while (q)
{
if (q->info-p->info<=lim)
nr++;
q=q->urm;
}
p=p->urm;
}
return nr;
}
int asd (int lim)
{
int nr=0;
for (i=0;i<k;i++)
if (a[i])
nr=nr+calc(a[i],lim);
return nr;
}
int main ()
{
f>>n>>k>>la>>lb;
for (i=1;i<=n;i++)
{
f>>x;
v[i]=x;
s[i]=s[i-1]+x;
}
for (i=n;i>=1;i--)
adauga (i,s[i]%k);
p=new nod;
p->info=0;
p->urm=a[0];
a[0]=p;
x=asd (lb);
y=asd (la-1);
g<<x-y;
return 0;
}