Cod sursa(job #498076)

Utilizator ProcopliucProcopliuc Adrian Procopliuc Data 3 noiembrie 2010 22:21:30
Problema Divk Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
# include <fstream.h>
ifstream f ("divk.in");
ofstream g ("divk.out");
long long int i,j,n,k,la,lb,s[500100],x,y;



  struct nod 
  {
	  int info;
	  nod *urm;
  }*a[100010],*p,*q;
  
   void adauga (long long int x,long long int i)
   {
	   p=new nod;
	   p->info=x;
	   p->urm=a[i];
	   a[i]=p;
   }
	 
    long long int calc (nod *p,long long int lim)
  {
	 long long int nr=0;
   q=p;
   while (p)
   {
     q=p->urm;
	 
      while (q)
	  {
        if (q->info-p->info<=lim)
          	nr++;
		else
			break;
		q=q->urm;
	  }
	  p=p->urm;
   }
return nr;   

	 
     
  }	 

   
   int asd (long long 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;
	
		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;
}