Pagini recente » Cod sursa (job #1633184) | Cod sursa (job #1041640) | Cod sursa (job #2015563) | Cod sursa (job #2284238) | Cod sursa (job #199948)
Cod sursa(job #199948)
#include <cstdio>
#define IN "shop.in"
#define OUT "shop.out"
#define FOR(i,a,b) for(ll i=a;i<=b;++i)
#define ll long long
ll N,C,L;
ll p[50],v[50];
ll sol[50];
void scan()
{
ll x,y;
freopen(IN, "r",stdin);
freopen(OUT, "w",stdout);
scanf("%lld%lld%lld", &N,&C,&L);
FOR(i,1,40)
v[i] = -1;
FOR(i,1,N)
scanf("%lld%lld", &x,&y),
v[x] = y,
p[x] = i;
sol[0] = N;
}
inline ll pow(ll x,ll y)
{
ll rez=1;
for(;y>0;y/=2)
{
if( y%2 )
rez *= x;
x *= x;
}
return rez;
}
void solve()
{
FOR(ii,1,40)
{
ll i=40-ii;
if(v[i] == -1)
continue;
ll j=v[i];
FOR(jj,0,v[i])
if( (jj + 1) * pow(C,i) > L)
{
j = jj;
break;
}
sol[ p[i] ] = j;
if(j)
L -= j * pow(C,i);
}
ll suma=0;
FOR(i,1,N)
suma += sol[i];
printf("%lld\n",suma);
FOR(i,1,N)
printf("%lld ", sol[i]);
}
int main()
{
scan();
solve();
return 0;
}