Cod sursa(job #289834)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 27 martie 2009 08:11:44
Problema Divk Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#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;
}