Pagini recente » Cod sursa (job #1019270) | Cod sursa (job #578695) | Cod sursa (job #423563) | Cod sursa (job #1410234) | Cod sursa (job #37777)
Cod sursa(job #37777)
#include <stdio.h>
#include <algorithm>
using namespace std;
int a[31],
b[31],
v[31];
long long p[34];
int i,n,c,o,x,q;
long long l,sum,t;
long long put(int x)
{
int i;
long long p=1;
for (i=1; i<=x; ++i) p*=c;
return p;
}
bool cmpf(const int x, const int y)
{
return a[x]<a[y];
}
int main()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
scanf("%d %d %lld",&n,&c,&l);
for (i=1; i<=n; ++i)
scanf("%d %d",&a[i],&b[i]);
for (i=1; i<=n; ++i) v[i]=i;
sort(v+1,v+n+1,cmpf);
i=1;
p[1]=put(a[v[1]]);
while (p[i]<=l && i<=n)
{
++i;
p[i]=put(a[v[i]]);
}
if (p[i]>l) --i;
o=i;
while (l>0)
{
x=b[v[i]];
t=l/p[i];
if (t>b[v[i]]) t=b[v[i]];
l-=(long long)t*p[i];
b[v[i]]-=t;
b[v[i]]=x-b[v[i]];
sum+=b[v[i]];
--i;
}
printf("%lld\n",sum);
q=i;
for (i=1; i<=q; ++i) b[v[i]]=0;
for (i=o+1; i<=n; ++i) b[v[i]]=0;
for (i=1; i<n; ++i) printf("%d ",b[i]);
printf("%d\n",b[n]);
return 0;
}