Pagini recente » Profil Daria09 | Istoria paginii utilizator/tudormaxim | Cod sursa (job #1856987) | ah znvpbcvn pbq | Cod sursa (job #1773952)
#include <cstdio>
#include <algorithm>
#define NMax 30
#define ll long long
#define mp make_pair
#define MIN(a,b)((a)<(b)?(a):(b))
using namespace std;
pair<int, int> e[NMax+1];
ll pwr[NMax+1];
ll sol[NMax+1];
int o[NMax+1];
int main(){
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
int N,C,i,j,x,y;
ll L,t,ans=0;
scanf("%d %d %lld",&N,&C,&L);
for(i = 1; i <= N; ++i)
{
scanf("%d %d",&x,&y);
e[i] = mp(x,y);
o[i] = x;
}
sort(e+1,e+N+1);
pwr[0] = 1;
for(t = C, i = 1; t <= L; ++i, t = t * C ) pwr[i] = t;
for(i = N; i >= 1; --i)
{
t = L / pwr[ e[i].first ];
t = MIN(t, e[i].second );
ans = ans + t;
L = L - t * pwr[ e[i].first ];
sol[i] = t;
}
printf("%lld\n", ans);
for(i = 1; i <= N; ++i)
{
for(j = 1; j <= N; ++j)
if( o[i] == e[j].first ) printf("%lld ",sol[j]);
}
printf("\n");
return 0;
}