Cod sursa(job #216716)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 25 octombrie 2008 13:32:41
Problema Shop Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>
long long pe[100],nr[100],n,c,l,i,j,pp,p,nadv[100],x,s[100],ss;
int main()
{
 freopen("shop.in","r",stdin);
 freopen("shop.out","w",stdout);
 scanf("%lld%lld%lld",&n,&c,&l);
 for(i=1;i<=n;++i)
    {scanf("%lld%lld",&p,&nr[i]);pe[i]=1;for(j=1;j<=p;++j)pe[i]*=c;nadv[i]=i;}
 for(i=1;i<n;++i)
  for(j=i+1;j<=n;++j)
     if(pe[i]>pe[j]){pp=pe[i];pe[i]=pe[j];pe[j]=pp;pp=nr[i];nr[i]=nr[j];nr[j]=pp;pp=nadv[i];nadv[i]=nadv[j];nadv[j]=pp;}
 x=n;
 while(l)
   {
    while(l<pe[x])--x;
    if(l/pe[x]<nr[x])
      {s[x]+=(long)(l/pe[x]);
      l%=pe[x];}
      else
      {s[x]+=nr[x];
      l-=nr[x]*pe[x];}
    --x;
   }
 for(i=1;i<=n;++i)ss+=s[i];
 for(i=1;i<n;++i)
  for(j=i+1;j<=n;++j)
     if(nadv[i]>nadv[j]){pp=pe[i];pe[i]=pe[j];pe[j]=pp;pp=nr[i];nr[i]=nr[j];nr[j]=pp;pp=nadv[i];nadv[i]=nadv[j];nadv[j]=pp;pp=s[i];s[i]=s[j];s[j]=pp;}
 printf("%lld\n",ss);
 for(i=1;i<=n;++i)printf("%lld ",s[i]);
 return 0;
}