Pagini recente » Cod sursa (job #323509) | Cod sursa (job #399422) | Borderou de evaluare (job #1070147) | Cod sursa (job #327287) | Cod sursa (job #212576)
Cod sursa(job #212576)
# include <cstdio>
# include <algorithm>
using namespace std;
# define FIN "shop.in"
# define FOUT "shop.out"
# define MAXN 35
struct elem
{
long long a,b,d;
} A[MAXN];
long long N,L,C,i,j,ct,c;
long long s[MAXN];
int cmp(elem a, elem b)
{
return a.a>b.a;
}
int main()
{
freopen(FIN,"r",stdin);
freopen(FOUT,"w",stdout);
scanf("%lld%lld%lld",&N,&C,&L);
for (i = 1; i <= N; ++i)
{
scanf("%lld%lld",&A[i].a,&A[i].b);
A[i].d = i;
}
sort(A+1,A+N+1,cmp);
ct = 0;
for (i = 1; i <= N; ++i)
{
c = 1;
for (j = 1; j <= A[i].a && c <= L; ++j)
c *= C;
if (j > A[i].a)
{
if (L/c <= A[i].b)
{
ct += L/c;
s[A[i].d] = L/c;
L = L%c;
}
else
{
ct += A[i].b;
s[A[i].d] = A[i].b;
L = L-c*A[i].b;
}
}
}
printf("%lld\n",ct);
for (i = 1; i <= N; ++i)
printf("%lld ",s[i]);
return 0;
}