Pagini recente » Cod sursa (job #851913) | Cod sursa (job #1936310) | Cod sursa (job #656442) | Cod sursa (job #1557771) | Cod sursa (job #289834)
Cod sursa(job #289834)
#include<fstream.h>
int n,s,i,r,sol,maxr,a,b,k,x;
struct nod {int inf; nod *adr;};
nod *v[100010];
void add(int i,int j)
{ nod *p;
p=new nod;
p->inf=j;
p->adr=v[i];
v[i]=p;
}
void cauta(int i)
{ nod *p,*q;
int dif;
for(p=v[i];p;p=p->adr)
for(q=p->adr;q;q=q->adr)
{ dif=(p->inf)-(q->inf);
if(dif>=a&&dif<=b) sol++;
else if(dif>b) break;
}
}
int main()
{
ifstream f("divk.in");
ofstream g("divk.out");
f>>n>>k>>a>>b;
for(i=1;i<=n;i++)
{ f>>x;
r=(r+x)%k;
if(r>maxr) maxr=r;
if(!r&&i<=b) sol++;
add(r,i);
}
for(i=0;i<=maxr;i++)
cauta(i);
g<<sol;
f.close();
g.close();
return 0;
}