Cod sursa(job #37911)

Utilizator bacerandreiBacer Andrei bacerandrei Data 25 martie 2007 13:03:29
Problema Shop Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<fstream.h>
#include<math.h>
long long a[31],b[31],n,c,l,i,j,x,gasit,nr,d[31],e[31],t;
void quik(int p,int q)
{
  long long aux,i,j,t;
   if(p<q)
    {
     i=p;
     j=q;
     t=1;
      do
       {
	if(a[i]<a[j])
	 {
	  aux=b[i];
	  b[i]=b[j];
	  b[j]=aux;
	  aux=a[i];
	  a[i]=a[j];
	  a[j]=aux;
	  t=!t;
	 }
	if(t)
	 j--;
	else
	 i++;

       }while(i!=j);
     quik(p,i-1);
     quik(i+1,q);
   }
}
int main()
{
  ifstream f("shop.in");
  ofstream g("shop.out");
   f>>n>>c>>l;
  for(i=1;i<=n;i++)
   f>>a[i]>>b[i];
  for(i=1;i<=n;i++)
   e[i]=a[i];
  quik(1,n);
  i=1;
   while(l>0)
    {
     gasit=0;
     j=0;
     x=pow(c,a[i]);
      while(j<b[i]&&gasit==0)
       {
	if(l-x>=0)
	 {
	  l=l-x;
	  j++;
	  nr++;
	 }
	else
	 gasit=1;
	}
       if(j!=0)
	{
	 for(t=1;t<=n;t++)
	  if(e[t]==a[i])
	 d[t]=j;
	}
      i++;
     }
    g<<nr<<"\n";
   for(i=1;i<=n;i++)
    if(d[i]!=0) 
    g<<d[i]<<" ";
  return 0;
}