Pagini recente » Cod sursa (job #2860891) | Cod sursa (job #2303952) | Cod sursa (job #375928) | Cod sursa (job #1904083) | Cod sursa (job #493390)
Cod sursa(job #493390)
#include<cstdio>
#include<algorithm>
using namespace std;
struct ban
{
long long poz,val,nr;
};
ban a[1<<5];
long long n,l,f[1<<5];
bool comp(const ban &X,const ban &Y)
{
return X.val>Y.val;
}
long long putere(long long c,long long x)
{
long long p=1;
for(int i=1;i<=x;i++)
p*=c;
return p;
}
void read()
{
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
long long c,x;
scanf("%lld%lld%lld",&n,&c,&l);
for(int i=1;i<=n;i++)
{
scanf("%lld%lld",&x,&a[i].nr);
a[i].val=putere(c,x);
a[i].poz=i;
}
}
void init()
{
sort(a+1,a+n+1,comp);
}
long long minim(long long x,long long y)
{
return x<y?x:y;
}
void solve()
{
long long tot=0;
for(int i=1;i<=n;i++)
{
f[a[i].poz]=minim(l/a[i].val,a[i].nr);
l-=(a[i].val*f[a[i].poz]);
tot+=f[a[i].poz];
}
printf("%lld\n",tot);
for(int i=1;i<=n;i++)
printf("%lld ",f[i]);
}
int main()
{
read();
init();
solve();
return 0;
}