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