Pagini recente » Cod sursa (job #2471060) | Cod sursa (job #817179) | Cod sursa (job #3260548) | Cod sursa (job #2862281) | Cod sursa (job #216716)
Cod sursa(job #216716)
#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;
}