Pagini recente » Cod sursa (job #621749) | Cod sursa (job #2612247) | Rating Luca Donosa (antonio_velcu) | Cod sursa (job #2617401) | Cod sursa (job #2495945)
#include <bits/stdc++.h>
using namespace std;
struct Coin{
int ind,val,ct;
bool operator <(const Coin &other) const{
return val>other.val;
}
}C[33];
bool resort(const Coin &A,const Coin &B){
return A.ind<B.ind;
}
long long powInt(int a,int b){
long long ans=1;
while(b--)
ans*=a;
return ans;
}
int main(){
freopen("shop.in","r",stdin);
freopen("shop.out","w",stdout);
int n,c;
long long l;
scanf("%d %d %lld",&n,&c,&l);
for(int i=1;i<=n;++i){
C[i].ind=i;
scanf("%d %d",&C[i].val,&C[i].ct);
}
sort(C+1,C+n+1);
int i=1;
long long nr=0;
for(int i=1;i<=n;++i){
long long ct=l/powInt(c,C[i].val);
if(ct>C[i].ct)
l-=powInt(c,C[i].val)*C[i].ct;
else{
l-=powInt(c,C[i].val)*ct;
C[i].ct=ct;
}
nr+=C[i].ct;
++i;
}
sort(C+1,C+n+1,resort);
printf("%lld\n",nr);
for(int i=1;i<=n;++i)
printf("%d ",C[i].ct);
return 0;
}